linux/net/l2tp
Tom Parkin 9980d001ce l2tp: add udp encap socket destroy handler
L2TP sessions hold a reference to the tunnel socket to prevent it going away
while sessions are still active.  However, since tunnel destruction is handled
by the sock sk_destruct callback there is a catch-22: a tunnel with sessions
cannot be deleted since each session holds a reference to the tunnel socket.
If userspace closes a managed tunnel socket, or dies, the tunnel will persist
and it will be neccessary to individually delete the sessions using netlink
commands.  This is ugly.

To prevent this occuring, this patch leverages the udp encapsulation socket
destroy callback to gain early notification when the tunnel socket is closed.
This allows us to safely close the sessions running in the tunnel, dropping
the tunnel socket references in the process.  The tunnel socket is then
destroyed as normal, and the tunnel resources deallocated in sk_destruct.

While we're at it, ensure that l2tp_tunnel_closeall correctly drops session
references to allow the sessions to be deleted rather than leaking.

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:38 -04:00
..
Kconfig net/l2tp: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:40:01 -08:00
l2tp_core.c l2tp: add udp encap socket destroy handler 2013-03-20 12:10:38 -04:00
l2tp_core.h l2tp: put tunnel socket release on a workqueue 2013-02-05 14:20:30 -05:00
l2tp_debugfs.c net: l2tp: Standardize logging styles 2012-05-17 04:34:38 -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 hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
l2tp_ip6.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
l2tp_netlink.c l2tp: set netnsok flag for netlink messages 2013-02-05 14:20:30 -05:00
l2tp_ppp.c l2tp: Restore socket refcount when sendmsg succeeds 2013-03-01 14:13:09 -05:00
Makefile l2tp: introduce L2TPv3 IP encapsulation support for IPv6 2012-05-01 09:30:55 -04:00