| Date | Wed, 16 Apr 2008 18:02:04 -0700 | From | Chris Wright <> | Subject | VLAN: Dont copy ALLMULTI/PROMISC flags from underlying device |
| |
-stable review patch. If anyone has any objections, please let us know. ---------------------
From: Patrick McHardy <kaber@trash.net>
Upstream commit: 0ed21b321a13421e2dfeaa70a6c324e05e3e91e6
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
[ Ported back to 2.6.24 VLAN code. -DaveM ]
Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Chris Wright <chrisw@sous-sol.org> --- net/8021q/vlan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c @@ -326,7 +326,7 @@ static int vlan_dev_init(struct net_devi 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))) | --
|