l2tp: Fix possible oops if transmitting or receiving when tunnel goes down
authorJames Chapman <jchapman@katalix.com>
Wed, 4 Jun 2008 22:54:07 +0000 (15:54 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 Jun 2008 22:54:07 +0000 (15:54 -0700)
commit24b95685ffcdb3dc28f64b9e8af6ea3e8360fbc5
treef647e001d2bd9115a121db792e9dc6d73fd25163
parent293ad60401da621b8b329abbe8c388edb25f658a
l2tp: Fix possible oops if transmitting or receiving when tunnel goes down

Some problems have been experienced in the field which cause an oops
in the pppol2tp driver if L2TP tunnels fail while passing data.

The pppol2tp driver uses private data that is referenced via the
sk->sk_user_data of its UDP and PPPoL2TP sockets. This patch makes
sure that the driver uses sock_hold() when it holds a reference to the
sk pointer. This affects its sendmsg(), recvmsg(), getname(),
[gs]etsockopt() and ioctl() handlers.

Tested by ISP where problem was seen. System has been up 10 days with
no oops since running this patch. Without the patch, an oops would
occur every 1-2 days.

Signed-off-by: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/pppol2tp.c