diff options
author | Patrick McHardy <kaber@trash.net> | 2007-07-14 18:52:56 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-07-14 18:52:56 -0700 |
commit | 6c78dcbd47a68a7d25d2bee7a6c74b9136cb5fde (patch) | |
tree | 21e4a2ea3eb7ed87ce525c59bb8c4d23d8c84589 /net/8021q/vlan.c | |
parent | a0a400d79e3dd7843e7e81baa3ef2957bdc292d0 (diff) | |
download | op-kernel-dev-6c78dcbd47a68a7d25d2bee7a6c74b9136cb5fde.zip op-kernel-dev-6c78dcbd47a68a7d25d2bee7a6c74b9136cb5fde.tar.gz |
[VLAN]: Fix promiscous/allmulti synchronization races
The set_multicast_list function may be called without holding the rtnl
mutex, resulting in races when changing the underlying device's promiscous
and allmulti state. Use the change_rx_mode hook, which is always invoked
under the rtnl.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/8021q/vlan.c')
-rw-r--r-- | net/8021q/vlan.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index abb9900..39bdcc2 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c @@ -373,6 +373,7 @@ void vlan_setup(struct net_device *new_dev) new_dev->open = vlan_dev_open; new_dev->stop = vlan_dev_stop; new_dev->set_multicast_list = vlan_dev_set_multicast_list; + new_dev->change_rx_flags = vlan_change_rx_flags; new_dev->destructor = free_netdev; new_dev->do_ioctl = vlan_dev_ioctl; |