aboutsummaryrefslogtreecommitdiffstats
path: root/net/8021q/vlan.h
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2007-07-14 21:52:56 -0400
committerDavid S. Miller <davem@davemloft.net>2007-07-14 21:52:56 -0400
commit6c78dcbd47a68a7d25d2bee7a6c74b9136cb5fde (patch)
tree21e4a2ea3eb7ed87ce525c59bb8c4d23d8c84589 /net/8021q/vlan.h
parenta0a400d79e3dd7843e7e81baa3ef2957bdc292d0 (diff)
[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.h')
-rw-r--r--net/8021q/vlan.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/8021q/vlan.h b/net/8021q/vlan.h
index 62ce1c519aab..7df5b2935579 100644
--- a/net/8021q/vlan.h
+++ b/net/8021q/vlan.h
@@ -69,6 +69,7 @@ int vlan_dev_set_vlan_flag(const struct net_device *dev,
69 u32 flag, short flag_val); 69 u32 flag, short flag_val);
70void vlan_dev_get_realdev_name(const struct net_device *dev, char *result); 70void vlan_dev_get_realdev_name(const struct net_device *dev, char *result);
71void vlan_dev_get_vid(const struct net_device *dev, unsigned short *result); 71void vlan_dev_get_vid(const struct net_device *dev, unsigned short *result);
72void vlan_change_rx_flags(struct net_device *dev, int change);
72void vlan_dev_set_multicast_list(struct net_device *vlan_dev); 73void vlan_dev_set_multicast_list(struct net_device *vlan_dev);
73 74
74int vlan_check_real_dev(struct net_device *real_dev, unsigned short vlan_id); 75int vlan_check_real_dev(struct net_device *real_dev, unsigned short vlan_id);