Skip to contentSkip to conversation

Patch "net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg" has been added to the 3.3-stable tree

PATCH [email protected] 1 participant 1 message May 9, 2012

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg

to the 3.3-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:
net-l2tp-unlock-socket-lock-before-returning-from-l2tp_ip_sendmsg.patch
and it can be found in the queue-3.3 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 3bfc6bc4d0e517923d7b1564aa2f8092f8f10667 Mon Sep 17 00:00:00 2001

From: Sasha Levin <[email protected]>
Date: Wed, 2 May 2012 03:58:43 +0000
Subject: net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg

From: Sasha Levin <[email protected]>

[ Upstream commit 84768edbb2721637620b2d84501bb0d5aed603f1 ]

l2tp_ip_sendmsg could return without releasing socket lock, making it all the way to userspace, and generating the following warning:

[  130.891594] ================================================
[  130.894569] [ BUG: lock held when returning to user space! ]
[  130.897257] 3.4.0-rc5-next-20120501-sasha #104 Tainted: G        W
[  130.900336] ------------------------------------------------
[  130.902996] trinity/8384 is leaving the kernel with locks still held!
[  130.906106] 1 lock held by trinity/8384:
[  130.907924]  #0:  (sk_lock-AF_INET){+.+.+.}, at: [<ffffffff82b9503f>] l2tp_ip_sendmsg+0x2f/0x550

Introduced by commit 2f16270 ("l2tp: Fix locking in l2tp_ip.c").

---
 net/l2tp/l2tp_ip.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
net/l2tp/l2tp_ip.c +2 -1
@@ -441,8 +441,9 @@ static int l2tp_ip_sendmsg(struct kiocb
 
 		daddr = lip->l2tp_addr.s_addr;
 	} else {
+		rc = -EDESTADDRREQ;
 		if (sk->sk_state != TCP_ESTABLISHED)
-			return -EDESTADDRREQ;
+			goto out;
 
 		daddr = inet->inet_daddr;
 		connected = 1;

Patches currently in stable-queue which might be from [email protected] are

queue-3.3/net-l2tp-unlock-socket-lock-before-returning-from-l2tp_ip_sendmsg.patch