Get connection info will return error when using synchronous hci_sync
call to refresh the cached information when the data times out. This is
because the cmd->user_data was not set before the call, so it will fail
checking connection is still connected.
Changes in v1:
- Set connection data before calling hci_cmd_sync_queue
Zhengping Jiang (1):
Bluetooth: mgmt: Fix refresh cached connection info
net/bluetooth/mgmt.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
--
2.36.1.476.g0c4daa206d-goog
Set the connection data before calling get_conn_info_sync, so it can be
verified the connection is still connected, before refreshing cached
values.
Fixes: 47db6b42991e6 ("Bluetooth: hci_sync: Convert MGMT_OP_GET_CONN_INFO")
Signed-off-by: Zhengping Jiang <[email protected]>
---
Changes in v1:
- Set connection data before calling hci_cmd_sync_queue
net/bluetooth/mgmt.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 74937a8346488..cfbea6fa04335 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -6828,11 +6828,14 @@ static int get_conn_info(struct sock *sk, struct hci_dev *hdev, void *data,
cmd = mgmt_pending_new(sk, MGMT_OP_GET_CONN_INFO, hdev, data,
len);
- if (!cmd)
+ if (!cmd) {
err = -ENOMEM;
- else
+ } else {
+ hci_conn_hold(conn);
+ cmd->user_data = hci_conn_get(conn);
err = hci_cmd_sync_queue(hdev, get_conn_info_sync,
cmd, get_conn_info_complete);
+ }
if (err < 0) {
mgmt_cmd_complete(sk, hdev->id, MGMT_OP_GET_CONN_INFO,
@@ -6844,9 +6847,6 @@ static int get_conn_info(struct sock *sk, struct hci_dev *hdev, void *data,
goto unlock;
}
- hci_conn_hold(conn);
- cmd->user_data = hci_conn_get(conn);
-
conn->conn_info_timestamp = jiffies;
} else {
/* Cache is valid, just reply with values cached in hci_conn */
--
2.36.1.476.g0c4daa206d-goog
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=649392
---Test result---
Test Summary:
CheckPatch PASS 1.31 seconds
GitLint PASS 0.76 seconds
SubjectPrefix PASS 0.65 seconds
BuildKernel PASS 31.71 seconds
BuildKernel32 PASS 27.44 seconds
Incremental Build with patchesPASS 37.83 seconds
TestRunner: Setup PASS 465.62 seconds
TestRunner: l2cap-tester PASS 16.97 seconds
TestRunner: bnep-tester PASS 5.81 seconds
TestRunner: mgmt-tester FAIL 103.03 seconds
TestRunner: rfcomm-tester PASS 9.15 seconds
TestRunner: sco-tester PASS 8.93 seconds
TestRunner: smp-tester PASS 8.98 seconds
TestRunner: userchan-tester PASS 5.99 seconds
Details
##############################
Test: TestRunner: mgmt-tester - FAIL - 103.03 seconds
Run test-runner with mgmt-tester
Total: 493, Passed: 491 (99.6%), Failed: 2, Not Run: 0
Failed Test Cases
Add Advertising - Success (Name+data+appear) Timed out 2.755 seconds
Add Ext Advertising - Success (Name+data+appear) Timed out 1.789 seconds
---
Regards,
Linux Bluetooth