Patch "l2tp: ensure session can't get removed during pppol2tp_session_ioctl()" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
l2tp: ensure session can't get removed during pppol2tp_session_ioctl()
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
l2tp-ensure-session-can-t-get-removed-during-pppol2tp_session_ioctl.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
57377d63547861919ee634b845c7caa38de4a452Mon Sep 17 00:00:00 2001
From: Guillaume Nault <[email protected]>
Date: Fri, 31 Mar 2017 13:02:26 +0200
Subject: l2tp: ensure session can't get removed during pppol2tp_session_ioctl()
From: Guillaume Nault <[email protected]>
commit 57377d63547861919ee634b845c7caa38de4a452 upstream.
Holding a reference on session is required before calling pppol2tp_session_ioctl(). The session could get freed while processing the ioctl otherwise. Since pppol2tp_session_ioctl() uses the session's socket, we also need to take a reference on it in l2tp_session_get().
--- net/l2tp/l2tp_ppp.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
net/l2tp/l2tp_ppp.c +11 -4
@@ -1141,11 +1141,18 @@ static int pppol2tp_tunnel_ioctl(structif (stats.session_id !=0 ) {/* resend to session ioctl handler */ struct l2tp_session *session = -l2tp_session_find (sock_net (sk), tunnel, stats.session_id); -if (session !=NULL ) - err =pppol2tp_session_ioctl (session, cmd, arg); -else +l2tp_session_get (sock_net (sk), tunnel, + stats.session_id, true); + +if (session) { + err =pppol2tp_session_ioctl (session, cmd, + arg); +if (session->deref) + session->deref (session); +l2tp_session_dec_refcount (session); + }else { err = -EBADR ; + }break ; }#ifdef CONFIG_XFRM
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/l2tp-take-a-reference-on-sessions-used-in-genetlink-handlers.patch queue-4.9/l2tp-ensure-session-can-t-get-removed-during-pppol2tp_session_ioctl.patch queue-4.9/l2tp-fix-race-in-l2tp_recv_common.patch queue-4.9/l2tp-hold-session-while-sending-creation-notifications.patch queue-4.9/l2tp-fix-duplicate-session-creation.patch