diff options
author | Zhengping Jiang <jiangzp@google.com> | 2023-05-25 03:04:15 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-06-29 20:48:35 +0300 |
commit | f752a0b334bb95fe9b42ecb511e0864e2768046f (patch) | |
tree | c74f9a804bfd3113475a9efe51eb4fd1250b9cfc | |
parent | 8153b738bc547878a017889d2b1cf8dd2de0e0c6 (diff) | |
download | linux-f752a0b334bb95fe9b42ecb511e0864e2768046f.tar.xz |
Bluetooth: L2CAP: Fix use-after-free
Fix potential use-after-free in l2cap_le_command_rej.
Signed-off-by: Zhengping Jiang <jiangzp@google.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r-- | net/bluetooth/l2cap_core.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index c5e8798e297c..17ca13e8c044 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -6374,9 +6374,14 @@ static inline int l2cap_le_command_rej(struct l2cap_conn *conn, if (!chan) goto done; + chan = l2cap_chan_hold_unless_zero(chan); + if (!chan) + goto done; + l2cap_chan_lock(chan); l2cap_chan_del(chan, ECONNREFUSED); l2cap_chan_unlock(chan); + l2cap_chan_put(chan); done: mutex_unlock(&conn->chan_lock); |