OpenCloudOS-Kernel/net/l2tp
Tom Parkin f6e16b299b l2tp: unhash l2tp sessions on delete, not on free
If we postpone unhashing of l2tp sessions until the structure is freed, we
risk:

 1. further packets arriving and getting queued while the pseudowire is being
    closed down
 2. the recv path hitting "scheduling while atomic" errors in the case that
    recv drops the last reference to a session and calls l2tp_session_free
    while in atomic context

As such, l2tp sessions should be unhashed from l2tp_core data structures early
in the teardown process prior to calling pseudowire close.  For pseudowires
like l2tp_ppp which have multiple shutdown codepaths, provide an unhash hook.

Signed-off-by: Tom Parkin <tparkin@katalix.com>
Signed-off-by: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-03-20 12:10:39 -04:00
..
Kconfig net/l2tp: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:40:01 -08:00
Makefile l2tp: introduce L2TPv3 IP encapsulation support for IPv6 2012-05-01 09:30:55 -04:00
l2tp_core.c l2tp: unhash l2tp sessions on delete, not on free 2013-03-20 12:10:39 -04:00
l2tp_core.h l2tp: unhash l2tp sessions on delete, not on free 2013-03-20 12:10:39 -04:00
l2tp_debugfs.c l2tp: avoid deadlock in l2tp stats update 2013-03-20 12:10:39 -04:00
l2tp_eth.c l2tp: fix oops in l2tp_eth_create() error path 2012-11-02 21:56:35 -04:00
l2tp_ip.c l2tp: close sessions in ip socket destroy callback 2013-03-20 12:10:38 -04:00
l2tp_ip6.c l2tp: close sessions in ip socket destroy callback 2013-03-20 12:10:38 -04:00
l2tp_netlink.c l2tp: avoid deadlock in l2tp stats update 2013-03-20 12:10:39 -04:00
l2tp_ppp.c l2tp: unhash l2tp sessions on delete, not on free 2013-03-20 12:10:39 -04:00