diff options
author | Jiri Bohac <jbohac@suse.cz> | 2009-10-29 06:23:54 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-10-29 06:23:54 +0100 |
commit | d9d5283228d0c752f199c901fff6e1405dc91bcb (patch) | |
tree | a21bf48e33cff976c50ef4f77dcc012cdcac4871 /drivers/net/ac3200.c | |
parent | virtio-net: fix data corruption with OOM (diff) | |
download | linux-d9d5283228d0c752f199c901fff6e1405dc91bcb.tar.xz linux-d9d5283228d0c752f199c901fff6e1405dc91bcb.zip |
bonding: fix a race condition in calls to slave MII ioctls
In mii monitor mode, bond_check_dev_link() calls the the ioctl
handler of slave devices. It stores the ndo_do_ioctl function
pointer to a static (!) ioctl variable and later uses it to call the
handler with the IOCTL macro.
If another thread executes bond_check_dev_link() at the same time
(even with a different bond, which none of the locks prevent), a
race condition occurs. If the two racing slaves have different
drivers, this may result in one driver's ioctl handler being
called with a pointer to a net_device controlled with a different
driver, resulting in unpredictable breakage.
Unless I am overlooking something, the "static" must be a
copy'n'paste error (?).
Signed-off-by: Jiri Bohac <jbohac@suse.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ac3200.c')
0 files changed, 0 insertions, 0 deletions