Patch "Bluetooth: iso: Fix recursive locking warning" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

    Bluetooth: iso: Fix recursive locking warning

to the 6.12-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:
     bluetooth-iso-fix-recursive-locking-warning.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 3c7954d458199def158e7839ca142070d1d2ecf8
Author: Iulia Tanasescu <iulia.tanasescu@xxxxxxx>
Date:   Wed Dec 4 14:28:49 2024 +0200

    Bluetooth: iso: Fix recursive locking warning
    
    [ Upstream commit 9bde7c3b3ad0e1f39d6df93dd1c9caf63e19e50f ]
    
    This updates iso_sock_accept to use nested locking for the parent
    socket, to avoid lockdep warnings caused because the parent and
    child sockets are locked by the same thread:
    
    [   41.585683] ============================================
    [   41.585688] WARNING: possible recursive locking detected
    [   41.585694] 6.12.0-rc6+ #22 Not tainted
    [   41.585701] --------------------------------------------
    [   41.585705] iso-tester/3139 is trying to acquire lock:
    [   41.585711] ffff988b29530a58 (sk_lock-AF_BLUETOOTH)
                   at: bt_accept_dequeue+0xe3/0x280 [bluetooth]
    [   41.585905]
                   but task is already holding lock:
    [   41.585909] ffff988b29533a58 (sk_lock-AF_BLUETOOTH)
                   at: iso_sock_accept+0x61/0x2d0 [bluetooth]
    [   41.586064]
                   other info that might help us debug this:
    [   41.586069]  Possible unsafe locking scenario:
    
    [   41.586072]        CPU0
    [   41.586076]        ----
    [   41.586079]   lock(sk_lock-AF_BLUETOOTH);
    [   41.586086]   lock(sk_lock-AF_BLUETOOTH);
    [   41.586093]
                    *** DEADLOCK ***
    
    [   41.586097]  May be due to missing lock nesting notation
    
    [   41.586101] 1 lock held by iso-tester/3139:
    [   41.586107]  #0: ffff988b29533a58 (sk_lock-AF_BLUETOOTH)
                    at: iso_sock_accept+0x61/0x2d0 [bluetooth]
    
    Fixes: ccf74f2390d6 ("Bluetooth: Add BTPROTO_ISO socket type")
    Signed-off-by: Iulia Tanasescu <iulia.tanasescu@xxxxxxx>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c
index 34eade4b0587..269ce0bb73a1 100644
--- a/net/bluetooth/iso.c
+++ b/net/bluetooth/iso.c
@@ -1225,7 +1225,11 @@ static int iso_sock_accept(struct socket *sock, struct socket *newsock,
 	long timeo;
 	int err = 0;
 
-	lock_sock(sk);
+	/* Use explicit nested locking to avoid lockdep warnings generated
+	 * because the parent socket and the child socket are locked on the
+	 * same thread.
+	 */
+	lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
 
 	timeo = sock_rcvtimeo(sk, arg->flags & O_NONBLOCK);
 
@@ -1256,7 +1260,7 @@ static int iso_sock_accept(struct socket *sock, struct socket *newsock,
 		release_sock(sk);
 
 		timeo = wait_woken(&wait, TASK_INTERRUPTIBLE, timeo);
-		lock_sock(sk);
+		lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
 	}
 	remove_wait_queue(sk_sleep(sk), &wait);
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux