projects
/
platform
/
kernel
/
linux-exynos.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4f4374a
)
Bluetooth: Use lock_sock_nested in bt_accept_enqueue
author
Philipp Puschmann
<pp@emlix.com>
Tue, 17 Jul 2018 11:41:12 +0000
(13:41 +0200)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Wed, 26 Sep 2018 06:38:09 +0000
(08:38 +0200)
[ Upstream commit
b71c69c26b4916d11b8d403d8e667bbd191f1b8f
]
Fixes this warning that was provoked by a pairing:
[60258.016221] WARNING: possible recursive locking detected
[60258.021558] 4.15.0-RD1812-BSP #1 Tainted: G O
[60258.027146] --------------------------------------------
[60258.032464] kworker/u5:0/70 is trying to acquire lock:
[60258.037609] (sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP){+.+.}, at: [<
87759073
>] bt_accept_enqueue+0x3c/0x74
[60258.046863]
[60258.046863] but task is already holding lock:
[60258.052704] (sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP){+.+.}, at: [<
d22d7106
>] l2cap_sock_new_connection_cb+0x1c/0x88
[60258.062905]
[60258.062905] other info that might help us debug this:
[60258.069441] Possible unsafe locking scenario:
[60258.069441]
[60258.075368] CPU0
[60258.077821] ----
[60258.080272] lock(sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP);
[60258.085510] lock(sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP);
[60258.090748]
[60258.090748] *** DEADLOCK ***
[60258.090748]
[60258.096676] May be due to missing lock nesting notation
[60258.096676]
[60258.103472] 5 locks held by kworker/u5:0/70:
[60258.107747] #0: ((wq_completion)%shdev->name#2){+.+.}, at: [<
9460d092
>] process_one_work+0x130/0x4fc
[60258.117263] #1: ((work_completion)(&hdev->rx_work)){+.+.}, at: [<
9460d092
>] process_one_work+0x130/0x4fc
[60258.126942] #2: (&conn->chan_lock){+.+.}, at: [<
7877c8c3
>] l2cap_connect+0x80/0x4f8
[60258.134806] #3: (&chan->lock/2){+.+.}, at: [<
2e16c724
>] l2cap_connect+0x8c/0x4f8
[60258.142410] #4: (sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP){+.+.}, at: [<
d22d7106
>] l2cap_sock_new_connection_cb+0x1c/0x88
[60258.153043]
[60258.153043] stack backtrace:
[60258.157413] CPU: 1 PID: 70 Comm: kworker/u5:0 Tainted: G O 4.15.0-RD1812-BSP #1
[60258.165945] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[60258.172485] Workqueue: hci0 hci_rx_work
[60258.176331] Backtrace:
[60258.178797] [<
8010c9fc
>] (dump_backtrace) from [<
8010ccbc
>] (show_stack+0x18/0x1c)
[60258.186379] r7:
80e55fe4
r6:
80e55fe4
r5:
20050093
r4:
00000000
[60258.192058] [<
8010cca4
>] (show_stack) from [<
809864e8
>] (dump_stack+0xb0/0xdc)
[60258.199301] [<
80986438
>] (dump_stack) from [<
8016ecc8
>] (__lock_acquire+0xffc/0x11d4)
[60258.207144] r9:
5e2bb019
r8:
630f974c
r7:
ba8a5940
r6:
ba8a5ed8
r5:
815b5220
r4:
80fa081c
[60258.214901] [<
8016dccc
>] (__lock_acquire) from [<
8016f620
>] (lock_acquire+0x78/0x98)
[60258.222655] r10:
00000040
r9:
00000040
r8:
808729f0
r7:
00000001
r6:
00000000
r5:
60050013
[60258.230491] r4:
00000000
[60258.233045] [<
8016f5a8
>] (lock_acquire) from [<
806ee974
>] (lock_sock_nested+0x64/0x88)
[60258.240970] r7:
00000000
r6:
b796e870
r5:
00000001
r4:
b796e800
[60258.246643] [<
806ee910
>] (lock_sock_nested) from [<
808729f0
>] (bt_accept_enqueue+0x3c/0x74)
[60258.255004] r8:
00000001
r7:
ba7d3c00
r6:
ba7d3ea4
r5:
ba7d2000
r4:
b796e800
[60258.261717] [<
808729b4
>] (bt_accept_enqueue) from [<
808aa39c
>] (l2cap_sock_new_connection_cb+0x68/0x88)
[60258.271117] r5:
b796e800
r4:
ba7d2000
[60258.274708] [<
808aa334
>] (l2cap_sock_new_connection_cb) from [<
808a294c
>] (l2cap_connect+0x190/0x4f8)
[60258.283933] r5:
00000001
r4:
ba6dce00
[60258.287524] [<
808a27bc
>] (l2cap_connect) from [<
808a4a14
>] (l2cap_recv_frame+0x744/0x2cf8)
[60258.295800] r10:
ba6dcf24
r9:
00000004
r8:
b78d8014
r7:
00000004
r6:
bb05d000
r5:
00000004
[60258.303635] r4:
bb05d008
[60258.306183] [<
808a42d0
>] (l2cap_recv_frame) from [<
808a7808
>] (l2cap_recv_acldata+0x210/0x214)
[60258.314805] r10:
b78e7800
r9:
bb05d960
r8:
00000001
r7:
bb05d000
r6:
0000000c
r5:
b7957a80
[60258.322641] r4:
ba6dce00
[60258.325188] [<
808a75f8
>] (l2cap_recv_acldata) from [<
8087630c
>] (hci_rx_work+0x35c/0x4e8)
[60258.333374] r6:
80e5743c
r5:
bb05d7c8
r4:
b7957a80
[60258.338004] [<
80875fb0
>] (hci_rx_work) from [<
8013dc7c
>] (process_one_work+0x1a4/0x4fc)
[60258.346018] r10:
00000001
r9:
00000000
r8:
baabfef8
r7:
ba997500
r6:
baaba800
r5:
baaa5d00
[60258.353853] r4:
bb05d7c8
[60258.356401] [<
8013dad8
>] (process_one_work) from [<
8013e028
>] (worker_thread+0x54/0x5cc)
[60258.364503] r10:
baabe038
r9:
baaba834
r8:
80e05900
r7:
00000088
r6:
baaa5d18
r5:
baaba800
[60258.372338] r4:
baaa5d00
[60258.374888] [<
8013dfd4
>] (worker_thread) from [<
801448f8
>] (kthread+0x134/0x160)
[60258.382295] r10:
ba8310b8
r9:
bb07dbfc
r8:
8013dfd4
r7:
baaa5d00
r6:
00000000
r5:
baaa8ac0
[60258.390130] r4:
ba831080
[60258.392682] [<
801447c4
>] (kthread) from [<
801080b4
>] (ret_from_fork+0x14/0x20)
[60258.399915] r10:
00000000
r9:
00000000
r8:
00000000
r7:
00000000
r6:
00000000
r5:
801447c4
[60258.407751] r4:
baaa8ac0
r3:
baabe000
Signed-off-by: Philipp Puschmann <pp@emlix.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/bluetooth/af_bluetooth.c
patch
|
blob
|
history
diff --git
a/net/bluetooth/af_bluetooth.c
b/net/bluetooth/af_bluetooth.c
index
91e3ba2
..
583951e
100644
(file)
--- a/
net/bluetooth/af_bluetooth.c
+++ b/
net/bluetooth/af_bluetooth.c
@@
-159,7
+159,7
@@
void bt_accept_enqueue(struct sock *parent, struct sock *sk)
BT_DBG("parent %p, sk %p", parent, sk);
sock_hold(sk);
- lock_sock
(sk
);
+ lock_sock
_nested(sk, SINGLE_DEPTH_NESTING
);
list_add_tail(&bt_sk(sk)->accept_q, &bt_sk(parent)->accept_q);
bt_sk(sk)->parent = parent;
release_sock(sk);