Commit 48c6613
committed
Bluetooth: Fix l2cap_disconnect_req deadlock
jira VULN-155003
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: Shreeya Patel <spatel@ciq.com>1 parent 0610110 commit 48c6613
1 file changed
+4
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4644 | 4644 | | |
4645 | 4645 | | |
4646 | 4646 | | |
| 4647 | + | |
4647 | 4648 | | |
| 4649 | + | |
4648 | 4650 | | |
4649 | 4651 | | |
4650 | 4652 | | |
| |||
4684 | 4686 | | |
4685 | 4687 | | |
4686 | 4688 | | |
| 4689 | + | |
4687 | 4690 | | |
| 4691 | + | |
4688 | 4692 | | |
4689 | 4693 | | |
4690 | 4694 | | |
| |||
0 commit comments