summaryrefslogtreecommitdiffstats
path: root/drivers/net/sh_eth.c
diff options
context:
space:
mode:
authorMichal Ostrowski <mostrows@gmail.com>2009-10-26 16:23:20 -0700
committerDavid S. Miller <davem@davemloft.net>2009-10-26 16:23:20 -0700
commitfb64bb560e181363c29ed4fe12a0d82765d61733 (patch)
treed3f5f15e9840964657bf40326705d79abe06e9e1 /drivers/net/sh_eth.c
parent5ccdcecb72692d46d7a9264e62751241c7eca559 (diff)
downloadlinux-fb64bb560e181363c29ed4fe12a0d82765d61733.tar.bz2
PPPoE: Fix flush/close races.
Be more careful about the state of pointers during tear-down. The "pppoe_dev" field can only be looked at safely while holding socket locks. This subsequently allows for the flush_lock to be killed. We depend on the PPPOX_CONNECTED state to tell us that that those fields are valid, so whoever clears that state (pppox_unbind_sock()) is responsible for the dev_put() call. We also have to ensure that we delete_item() on all sockets before they are cleaned up. The need for these changes has been exposed by scenarios wherein namespace bindings of ethernet devices change while there are ongoing PPPoE sessions, which resulted in oopses due to unusual socket connection termination paths, exposing these issues. Signed-off-by: Michal Ostrowski <mostrows@gmail.com> Reviewed-by: Cyril Gorcunov <gorcunov@gmail.com> Reported-by: Denys Fedoryschenko <denys@visp.net.lb> Tested-by: Denys Fedoryschenko <denys@visp.net.lb>
Diffstat (limited to 'drivers/net/sh_eth.c')
0 files changed, 0 insertions, 0 deletions