2023-09-28 08:29:42

by Iulia Tanasescu

[permalink] [raw]
Subject: [PATCH v2 1/1] Bluetooth: ISO: Fix invalid context error

This moves the hci_le_terminate_big_sync call from rx_work
to cmd_sync_work, to avoid calling sleeping function from
an invalid context.

Signed-off-by: Iulia Tanasescu <[email protected]>
---
net/bluetooth/hci_event.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index d242f956dea8..89ba3e5a9c0e 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -7020,6 +7020,14 @@ static void hci_le_cis_req_evt(struct hci_dev *hdev, void *data,
hci_dev_unlock(hdev);
}

+static int hci_iso_term_big_sync(struct hci_dev *hdev, void *data)
+{
+ u8 handle = PTR_UINT(data);
+
+ return hci_le_terminate_big_sync(hdev, handle,
+ HCI_ERROR_LOCAL_HOST_TERM);
+}
+
static void hci_le_create_big_complete_evt(struct hci_dev *hdev, void *data,
struct sk_buff *skb)
{
@@ -7064,16 +7072,17 @@ static void hci_le_create_big_complete_evt(struct hci_dev *hdev, void *data,
rcu_read_lock();
}

+ rcu_read_unlock();
+
if (!ev->status && !i)
/* If no BISes have been connected for the BIG,
* terminate. This is in case all bound connections
* have been closed before the BIG creation
* has completed.
*/
- hci_le_terminate_big_sync(hdev, ev->handle,
- HCI_ERROR_LOCAL_HOST_TERM);
+ hci_cmd_sync_queue(hdev, hci_iso_term_big_sync,
+ UINT_PTR(ev->handle), NULL);

- rcu_read_unlock();
hci_dev_unlock(hdev);
}

--
2.39.2


2023-09-28 14:16:02

by bluez.test.bot

[permalink] [raw]
Subject: RE: Bluetooth: ISO: Fix invalid context error

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=788378

---Test result---

Test Summary:
CheckPatch PASS 0.74 seconds
GitLint PASS 0.33 seconds
SubjectPrefix PASS 0.11 seconds
BuildKernel PASS 39.89 seconds
CheckAllWarning PASS 43.70 seconds
CheckSparse WARNING 49.50 seconds
CheckSmatch WARNING 135.26 seconds
BuildKernel32 PASS 38.48 seconds
TestRunnerSetup PASS 592.66 seconds
TestRunner_l2cap-tester PASS 35.07 seconds
TestRunner_iso-tester PASS 66.51 seconds
TestRunner_bnep-tester PASS 12.28 seconds
TestRunner_mgmt-tester PASS 255.70 seconds
TestRunner_rfcomm-tester PASS 18.86 seconds
TestRunner_sco-tester PASS 22.78 seconds
TestRunner_ioctl-tester PASS 21.26 seconds
TestRunner_mesh-tester PASS 15.91 seconds
TestRunner_smp-tester PASS 16.91 seconds
TestRunner_userchan-tester PASS 13.22 seconds
IncrementalBuild PASS 37.25 seconds

Details
##############################
Test: CheckSparse - WARNING
Desc: Run sparse tool with linux kernel
Output:
net/bluetooth/hci_event.c: note: in included file (through include/net/bluetooth/hci_core.h):
##############################
Test: CheckSmatch - WARNING
Desc: Run smatch tool with source
Output:
net/bluetooth/hci_event.c: note: in included file (through include/net/bluetooth/hci_core.h):


---
Regards,
Linux Bluetooth