Commit 26ca6d1
committed
Bluetooth: Fix l2cap_disconnect_req deadlock
jira VULN-155000
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: Jonathan Maple <jmaple@ciq.com>1 parent cadafab commit 26ca6d1
1 file changed
+4
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4609 | 4609 | | |
4610 | 4610 | | |
4611 | 4611 | | |
| 4612 | + | |
4612 | 4613 | | |
| 4614 | + | |
4613 | 4615 | | |
4614 | 4616 | | |
4615 | 4617 | | |
| |||
4649 | 4651 | | |
4650 | 4652 | | |
4651 | 4653 | | |
| 4654 | + | |
4652 | 4655 | | |
| 4656 | + | |
4653 | 4657 | | |
4654 | 4658 | | |
4655 | 4659 | | |
| |||
0 commit comments