Commit 09d2b3c
committed
Bluetooth: Fix l2cap_disconnect_req deadlock
jira VULN-154997
cve-pre CVE-2023-53297
commit-author Ying Hsu <yinghsu@chromium.org>
commit 02c5ea5
L2CAP assumes that the locks conn->chan_lock and chan->lock are
acquired in the order conn->chan_lock, chan->lock to avoid
potential deadlock.
For example, l2sock_shutdown acquires these locks in the order:
mutex_lock(&conn->chan_lock)
l2cap_chan_lock(chan)
However, l2cap_disconnect_req acquires chan->lock in
l2cap_get_chan_by_scid first and then acquires conn->chan_lock
before calling l2cap_chan_del. This means that these locks are
acquired in unexpected order, which leads to potential deadlock:
l2cap_chan_lock(c)
mutex_lock(&conn->chan_lock)
This patch releases chan->lock before acquiring the conn_chan_lock
to avoid the potential deadlock.
Fixes: a2a9339 ("Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp}")
Signed-off-by: Ying Hsu <yinghsu@chromium.org>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
(cherry picked from commit 02c5ea5)
Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>1 parent 3695251 commit 09d2b3c
1 file changed
+4
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4643 | 4643 | | |
4644 | 4644 | | |
4645 | 4645 | | |
| 4646 | + | |
4646 | 4647 | | |
| 4648 | + | |
4647 | 4649 | | |
4648 | 4650 | | |
4649 | 4651 | | |
| |||
4683 | 4685 | | |
4684 | 4686 | | |
4685 | 4687 | | |
| 4688 | + | |
4686 | 4689 | | |
| 4690 | + | |
4687 | 4691 | | |
4688 | 4692 | | |
4689 | 4693 | | |
| |||
0 commit comments