diff options
author | Patrick McHardy <kaber@trash.net> | 2008-03-26 00:15:17 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-03-26 00:15:17 -0700 |
commit | 0ed21b321a13421e2dfeaa70a6c324e05e3e91e6 (patch) | |
tree | edaabd8f35f77f6ef4e39c659621d3017845d944 /net | |
parent | f0c88f9c45f39acd017328515890481adcb32607 (diff) | |
download | linux-3.10-0ed21b321a13421e2dfeaa70a6c324e05e3e91e6.tar.gz linux-3.10-0ed21b321a13421e2dfeaa70a6c324e05e3e91e6.tar.bz2 linux-3.10-0ed21b321a13421e2dfeaa70a6c324e05e3e91e6.zip |
[VLAN]: Don't copy ALLMULTI/PROMISC flags from underlying device
Changing these flags requires to use dev_set_allmulti/dev_set_promiscuity
or dev_change_flags. Setting it directly causes two unwanted effects:
- the next dev_change_flags call will notice a difference between
dev->gflags and the actual flags, enable promisc/allmulti
mode and incorrectly update dev->gflags
- this keeps the underlying device in promisc/allmulti mode until
the VLAN device is deleted
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/8021q/vlan_dev.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 8fbcefe10c9..480ea90e7dc 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c @@ -660,7 +660,7 @@ static int vlan_dev_init(struct net_device *dev) int subclass = 0; /* IFF_BROADCAST|IFF_MULTICAST; ??? */ - dev->flags = real_dev->flags & ~IFF_UP; + dev->flags = real_dev->flags & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI); dev->iflink = real_dev->ifindex; dev->state = (real_dev->state & ((1<<__LINK_STATE_NOCARRIER) | (1<<__LINK_STATE_DORMANT))) | |