Revision b6c40d68ff6498b7f63ddf97cf0aa818d748dee7 authored by Patrick McHardy on 07 October 2008, 22:26:48 UTC, committed by David S. Miller on 07 October 2008, 22:26:48 UTC
Jesper Dangaard Brouer <hawk@comx.dk> reported a bug when setting a VLAN device down that is in promiscous mode: When the VLAN device is set down, the promiscous count on the real device is decremented by one by vlan_dev_stop(). When removing the promiscous flag from the VLAN device afterwards, the promiscous count on the real device is decremented a second time by the vlan_change_rx_flags() callback. The root cause for this is that the ->change_rx_flags() callback is invoked while the device is down. The synchronization is meant to mirror the behaviour of the ->set_rx_mode callbacks, meaning the ->open function is responsible for doing a full sync on open, the ->close() function is responsible for doing full cleanup on ->stop() and ->change_rx_flags() is meant to do incremental changes while the device is UP. Only invoke ->change_rx_flags() while the device is UP to provide the intended behaviour. Tested-by: Jesper Dangaard Brouer <jdb@comx.dk> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 859f4c7
File | Mode | Size |
---|---|---|
Makefile | -rw-r--r-- | 335 bytes |
compat.c | -rw-r--r-- | 17.0 KB |
compat_mq.c | -rw-r--r-- | 4.0 KB |
ipc_sysctl.c | -rw-r--r-- | 7.0 KB |
ipcns_notifier.c | -rw-r--r-- | 2.2 KB |
mqueue.c | -rw-r--r-- | 30.0 KB |
msg.c | -rw-r--r-- | 20.8 KB |
msgutil.c | -rw-r--r-- | 2.3 KB |
namespace.c | -rw-r--r-- | 2.5 KB |
sem.c | -rw-r--r-- | 33.7 KB |
shm.c | -rw-r--r-- | 25.1 KB |
util.c | -rw-r--r-- | 23.0 KB |
util.h | -rw-r--r-- | 4.5 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...