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
History
File Mode Size
basic
genksyms
kconfig
ksymoops
mod
package
rt-tester
.gitignore -rw-r--r-- 77 bytes
Kbuild.include -rw-r--r-- 9.1 KB
Lindent -rwxr-xr-x 460 bytes
Makefile -rw-r--r-- 893 bytes
Makefile.build -rw-r--r-- 11.1 KB
Makefile.clean -rw-r--r-- 3.2 KB
Makefile.fwinst -rw-r--r-- 2.0 KB
Makefile.headersinst -rw-r--r-- 3.0 KB
Makefile.host -rw-r--r-- 6.5 KB
Makefile.lib -rw-r--r-- 6.8 KB
Makefile.modinst -rw-r--r-- 1.0 KB
Makefile.modpost -rw-r--r-- 5.4 KB
bin2c.c -rw-r--r-- 702 bytes
binoffset.c -rw-r--r-- 3.9 KB
bloat-o-meter -rwxr-xr-x 1.7 KB
checkincludes.pl -rwxr-xr-x 529 bytes
checkkconfigsymbols.sh -rwxr-xr-x 1.8 KB
checkpatch.pl -rwxr-xr-x 61.8 KB
checkstack.pl -rwxr-xr-x 4.9 KB
checksyscalls.sh -rwxr-xr-x 3.1 KB
checkversion.pl -rwxr-xr-x 1.8 KB
cleanfile -rwxr-xr-x 3.4 KB
cleanpatch -rwxr-xr-x 5.0 KB
conmakehash.c -rw-r--r-- 6.0 KB
decodecode -rwxr-xr-x 1.1 KB
diffconfig -rwxr-xr-x 3.6 KB
export_report.pl -rw-r--r-- 4.2 KB
extract-ikconfig -rwxr-xr-x 1.7 KB
gcc-version.sh -rw-r--r-- 818 bytes
gcc-x86_64-has-stack-protector.sh -rw-r--r-- 187 bytes
gen_initramfs_list.sh -rw-r--r-- 6.6 KB
headers.sh -rwxr-xr-x 767 bytes
headers_check.pl -rw-r--r-- 1.2 KB
headers_install.pl -rw-r--r-- 1.4 KB
kallsyms.c -rw-r--r-- 13.2 KB
kernel-doc -rwxr-xr-x 55.9 KB
makelst -rwxr-xr-x 773 bytes
mkcompile_h -rwxr-xr-x 2.5 KB
mkmakefile -rw-r--r-- 1.0 KB
mksysmap -rw-r--r-- 1.3 KB
mkuboot.sh -rwxr-xr-x 379 bytes
mkversion -rw-r--r-- 74 bytes
namespace.pl -rwxr-xr-x 13.1 KB
patch-kernel -rwxr-xr-x 9.8 KB
pnmtologo.c -rw-r--r-- 11.7 KB
profile2linkerlist.pl -rw-r--r-- 378 bytes
setlocalversion -rwxr-xr-x 1.5 KB
show_delta -rwxr-xr-x 3.0 KB
unifdef.c -rw-r--r-- 29.0 KB
ver_linux -rwxr-xr-x 3.1 KB

back to top