Message ID | 20240624134637.3790278-1-luiz.dentz@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | d8abca53bb2b3eacef5b8ee4fcbe5e3907d9cf29 |
Headers | show |
Series | [v1] Bluetooth: L2CAP: Fix deadlock | expand |
Context | Check | Description |
---|---|---|
tedd_an/pre-ci_am | success | Success |
tedd_an/CheckPatch | success | CheckPatch PASS |
tedd_an/GitLint | success | Gitlint PASS |
tedd_an/SubjectPrefix | success | Gitlint PASS |
tedd_an/BuildKernel | success | BuildKernel PASS |
tedd_an/CheckAllWarning | success | CheckAllWarning PASS |
tedd_an/CheckSparse | success | CheckSparse PASS |
tedd_an/CheckSmatch | success | CheckSparse PASS |
tedd_an/BuildKernel32 | success | BuildKernel32 PASS |
tedd_an/TestRunnerSetup | success | TestRunnerSetup PASS |
tedd_an/TestRunner_l2cap-tester | success | TestRunner PASS |
tedd_an/TestRunner_iso-tester | success | TestRunner PASS |
tedd_an/TestRunner_bnep-tester | success | TestRunner PASS |
tedd_an/TestRunner_mgmt-tester | success | TestRunner PASS |
tedd_an/TestRunner_rfcomm-tester | success | TestRunner PASS |
tedd_an/TestRunner_sco-tester | success | TestRunner PASS |
tedd_an/TestRunner_ioctl-tester | success | TestRunner PASS |
tedd_an/TestRunner_mesh-tester | success | TestRunner PASS |
tedd_an/TestRunner_smp-tester | success | TestRunner PASS |
tedd_an/TestRunner_userchan-tester | success | TestRunner PASS |
tedd_an/IncrementalBuild | success | Incremental Build PASS |
This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=864924 ---Test result--- Test Summary: CheckPatch PASS 0.74 seconds GitLint PASS 0.24 seconds SubjectPrefix PASS 0.08 seconds BuildKernel PASS 30.23 seconds CheckAllWarning PASS 32.83 seconds CheckSparse PASS 39.01 seconds CheckSmatch PASS 104.85 seconds BuildKernel32 PASS 29.39 seconds TestRunnerSetup PASS 529.98 seconds TestRunner_l2cap-tester PASS 20.66 seconds TestRunner_iso-tester PASS 43.64 seconds TestRunner_bnep-tester PASS 5.10 seconds TestRunner_mgmt-tester PASS 114.35 seconds TestRunner_rfcomm-tester PASS 7.63 seconds TestRunner_sco-tester PASS 15.29 seconds TestRunner_ioctl-tester PASS 8.05 seconds TestRunner_mesh-tester PASS 6.12 seconds TestRunner_smp-tester PASS 7.05 seconds TestRunner_userchan-tester PASS 5.11 seconds IncrementalBuild PASS 28.12 seconds --- Regards, Linux Bluetooth
On Mon, Jun 24, 2024 at 10:34 AM <bluez.test.bot@gmail.com> wrote: > > This is automated email and please do not reply to this email! > > Dear submitter, > > Thank you for submitting the patches to the linux bluetooth mailing list. > This is a CI test results with your patch series: > PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=864924 > > ---Test result--- > > Test Summary: > CheckPatch PASS 0.74 seconds > GitLint PASS 0.24 seconds > SubjectPrefix PASS 0.08 seconds > BuildKernel PASS 30.23 seconds > CheckAllWarning PASS 32.83 seconds > CheckSparse PASS 39.01 seconds > CheckSmatch PASS 104.85 seconds > BuildKernel32 PASS 29.39 seconds > TestRunnerSetup PASS 529.98 seconds > TestRunner_l2cap-tester PASS 20.66 seconds > TestRunner_iso-tester PASS 43.64 seconds > TestRunner_bnep-tester PASS 5.10 seconds > TestRunner_mgmt-tester PASS 114.35 seconds > TestRunner_rfcomm-tester PASS 7.63 seconds > TestRunner_sco-tester PASS 15.29 seconds > TestRunner_ioctl-tester PASS 8.05 seconds > TestRunner_mesh-tester PASS 6.12 seconds > TestRunner_smp-tester PASS 7.05 seconds > TestRunner_userchan-tester PASS 5.11 seconds > IncrementalBuild PASS 28.12 seconds > > > > --- > Regards, > Linux Bluetooth >
Hello: This patch was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>: On Mon, 24 Jun 2024 09:46:37 -0400 you wrote: > From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > This fixes the following deadlock introduced by e3203b177717 > ("bluetooth/l2cap: sync sock recv cb and release"): > > ============================================ > WARNING: possible recursive locking detected > 6.10.0-rc3-g4029dba6b6f1 #6823 Not tainted > > [...] Here is the summary with links: - [v1] Bluetooth: L2CAP: Fix deadlock https://git.kernel.org/bluetooth/bluetooth-next/c/d8abca53bb2b You are awesome, thank you!
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index aed025734d04..c3c26bbb5dda 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -6761,6 +6761,8 @@ static void l2cap_conless_channel(struct l2cap_conn *conn, __le16 psm, BT_DBG("chan %p, len %d", chan, skb->len); + l2cap_chan_lock(chan); + if (chan->state != BT_BOUND && chan->state != BT_CONNECTED) goto drop; @@ -6777,6 +6779,7 @@ static void l2cap_conless_channel(struct l2cap_conn *conn, __le16 psm, } drop: + l2cap_chan_unlock(chan); l2cap_chan_put(chan); free_skb: kfree_skb(skb); diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 962aa11ce3de..ba437c6f6ee5 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c @@ -1489,18 +1489,9 @@ static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb) struct l2cap_pinfo *pi; int err; - /* To avoid race with sock_release, a chan lock needs to be added here - * to synchronize the sock. - */ - l2cap_chan_hold(chan); - l2cap_chan_lock(chan); sk = chan->data; - - if (!sk) { - l2cap_chan_unlock(chan); - l2cap_chan_put(chan); + if (!sk) return -ENXIO; - } pi = l2cap_pi(sk); lock_sock(sk); @@ -1552,8 +1543,6 @@ static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb) done: release_sock(sk); - l2cap_chan_unlock(chan); - l2cap_chan_put(chan); return err; }