* [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS @ 2025-05-07 7:30 Yang Li via B4 Relay 2025-05-07 7:46 ` Paul Menzel 2025-05-08 6:54 ` kernel test robot 0 siblings, 2 replies; 6+ messages in thread From: Yang Li via B4 Relay @ 2025-05-07 7:30 UTC (permalink / raw) To: Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz Cc: linux-bluetooth, linux-kernel, Yang Li From: Yang Li <yang.li@amlogic.com> The iso_get_sock function adds dst address matching to distinguish BIS and CIS sockets. Link: https://github.com/bluez/bluez/issues/1224 Signed-off-by: Yang Li <yang.li@amlogic.com> --- net/bluetooth/hci_event.c | 35 ++++++++++++++++++++--------------- net/bluetooth/iso.c | 12 +++++++++--- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 66052d6aaa1d..c1f32e98ef8a 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -6413,6 +6413,8 @@ static void hci_le_pa_sync_estabilished_evt(struct hci_dev *hdev, void *data, conn->sync_handle = le16_to_cpu(ev->handle); conn->sid = HCI_SID_INVALID; + conn->dst = ev->bdaddr; + conn->dst_type = ev->bdaddr_type; mask |= hci_proto_connect_ind(hdev, &ev->bdaddr, BIS_LINK, &flags); @@ -6425,7 +6427,8 @@ static void hci_le_pa_sync_estabilished_evt(struct hci_dev *hdev, void *data, goto unlock; /* Add connection to indicate PA sync event */ - pa_sync = hci_conn_add_unset(hdev, BIS_LINK, BDADDR_ANY, + + pa_sync = hci_conn_add_unset(hdev, BIS_LINK, &ev->bdaddr, HCI_ROLE_SLAVE); if (IS_ERR(pa_sync)) @@ -6456,13 +6459,6 @@ static void hci_le_per_adv_report_evt(struct hci_dev *hdev, void *data, hci_dev_lock(hdev); - mask |= hci_proto_connect_ind(hdev, BDADDR_ANY, BIS_LINK, &flags); - if (!(mask & HCI_LM_ACCEPT)) - goto unlock; - - if (!(flags & HCI_PROTO_DEFER)) - goto unlock; - pa_sync = hci_conn_hash_lookup_pa_sync_handle (hdev, le16_to_cpu(ev->sync_handle)); @@ -6470,6 +6466,13 @@ static void hci_le_per_adv_report_evt(struct hci_dev *hdev, void *data, if (!pa_sync) goto unlock; + mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); + if (!(mask & HCI_LM_ACCEPT)) + goto unlock; + + if (!(flags & HCI_PROTO_DEFER)) + goto unlock; + if (ev->data_status == LE_PA_DATA_COMPLETE && !test_and_set_bit(HCI_CONN_PA_SYNC, &pa_sync->flags)) { /* Notify iso layer */ @@ -6993,6 +6996,8 @@ static void hci_le_big_sync_established_evt(struct hci_dev *hdev, void *data, set_bit(HCI_CONN_PA_SYNC, &bis->flags); bis->sync_handle = conn->sync_handle; + bis->dst = conn->dst; + bis->dst_type = conn->dst_type; bis->iso_qos.bcast.big = ev->handle; memset(&interval, 0, sizeof(interval)); memcpy(&interval, ev->latency, sizeof(ev->latency)); @@ -7038,13 +7043,6 @@ static void hci_le_big_info_adv_report_evt(struct hci_dev *hdev, void *data, hci_dev_lock(hdev); - mask |= hci_proto_connect_ind(hdev, BDADDR_ANY, BIS_LINK, &flags); - if (!(mask & HCI_LM_ACCEPT)) - goto unlock; - - if (!(flags & HCI_PROTO_DEFER)) - goto unlock; - pa_sync = hci_conn_hash_lookup_pa_sync_handle (hdev, le16_to_cpu(ev->sync_handle)); @@ -7054,6 +7052,13 @@ static void hci_le_big_info_adv_report_evt(struct hci_dev *hdev, void *data, pa_sync->iso_qos.bcast.encryption = ev->encryption; + mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); + if (!(mask & HCI_LM_ACCEPT)) + goto unlock; + + if (!(flags & HCI_PROTO_DEFER)) + goto unlock; + /* Notify iso layer */ hci_connect_cfm(pa_sync, 0); diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c index 6e2c752aaa8f..1dc233f04dbe 100644 --- a/net/bluetooth/iso.c +++ b/net/bluetooth/iso.c @@ -641,11 +641,12 @@ static struct sock *iso_get_sock(bdaddr_t *src, bdaddr_t *dst, continue; /* Exact match. */ - if (!bacmp(&iso_pi(sk)->src, src)) { + if (!bacmp(&iso_pi(sk)->src, src) + && !bacmp(&iso_pi(sk)->dst, dst) + ){ sock_hold(sk); break; } - /* Closest match */ if (!bacmp(&iso_pi(sk)->src, BDADDR_ANY)) { if (sk1) @@ -1962,7 +1963,7 @@ static void iso_conn_ready(struct iso_conn *conn) } if (!parent) - parent = iso_get_sock(&hcon->src, BDADDR_ANY, + parent = iso_get_sock(&hcon->src, &hcon->dst, BT_LISTEN, NULL, NULL); if (!parent) @@ -2203,6 +2204,11 @@ int iso_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 *flags) } else { sk = iso_get_sock(&hdev->bdaddr, BDADDR_ANY, BT_LISTEN, NULL, NULL); + if (!sk) + sk = iso_get_sock(&hdev->bdaddr, bdaddr, + BT_LISTEN, NULL, NULL); + else + iso_pi(sk)->dst = *bdaddr; } done: --- base-commit: f3daca9b490154fbb0459848cc2ed61e8367bddc change-id: 20250506-iso-6515893b5bb3 Best regards, -- Yang Li <yang.li@amlogic.com> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS 2025-05-07 7:30 [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS Yang Li via B4 Relay @ 2025-05-07 7:46 ` Paul Menzel 2025-05-08 2:06 ` Yang Li 2025-05-08 6:54 ` kernel test robot 1 sibling, 1 reply; 6+ messages in thread From: Paul Menzel @ 2025-05-07 7:46 UTC (permalink / raw) To: Yang Li Cc: Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz, linux-bluetooth, linux-kernel Dear Yang, Thank you for your patch. Am 07.05.25 um 09:30 schrieb Yang Li via B4 Relay: > From: Yang Li <yang.li@amlogic.com> It’d be great if you could start by describing the problem. > The iso_get_sock function adds dst address matching to > distinguish BIS and CIS sockets. > > Link: https://github.com/bluez/bluez/issues/1224 How can this patch be tested? > Signed-off-by: Yang Li <yang.li@amlogic.com> > --- > net/bluetooth/hci_event.c | 35 ++++++++++++++++++++--------------- > net/bluetooth/iso.c | 12 +++++++++--- > 2 files changed, 29 insertions(+), 18 deletions(-) > > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c > index 66052d6aaa1d..c1f32e98ef8a 100644 > --- a/net/bluetooth/hci_event.c > +++ b/net/bluetooth/hci_event.c > @@ -6413,6 +6413,8 @@ static void hci_le_pa_sync_estabilished_evt(struct hci_dev *hdev, void *data, > > conn->sync_handle = le16_to_cpu(ev->handle); > conn->sid = HCI_SID_INVALID; > + conn->dst = ev->bdaddr; > + conn->dst_type = ev->bdaddr_type; > > mask |= hci_proto_connect_ind(hdev, &ev->bdaddr, BIS_LINK, > &flags); > @@ -6425,7 +6427,8 @@ static void hci_le_pa_sync_estabilished_evt(struct hci_dev *hdev, void *data, > goto unlock; > > /* Add connection to indicate PA sync event */ > - pa_sync = hci_conn_add_unset(hdev, BIS_LINK, BDADDR_ANY, > + Why the extra blank line? > + pa_sync = hci_conn_add_unset(hdev, BIS_LINK, &ev->bdaddr, > HCI_ROLE_SLAVE); > > if (IS_ERR(pa_sync)) Kind regards, Paul > @@ -6456,13 +6459,6 @@ static void hci_le_per_adv_report_evt(struct hci_dev *hdev, void *data, > > hci_dev_lock(hdev); > > - mask |= hci_proto_connect_ind(hdev, BDADDR_ANY, BIS_LINK, &flags); > - if (!(mask & HCI_LM_ACCEPT)) > - goto unlock; > - > - if (!(flags & HCI_PROTO_DEFER)) > - goto unlock; > - > pa_sync = hci_conn_hash_lookup_pa_sync_handle > (hdev, > le16_to_cpu(ev->sync_handle)); > @@ -6470,6 +6466,13 @@ static void hci_le_per_adv_report_evt(struct hci_dev *hdev, void *data, > if (!pa_sync) > goto unlock; > > + mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); > + if (!(mask & HCI_LM_ACCEPT)) > + goto unlock; > + > + if (!(flags & HCI_PROTO_DEFER)) > + goto unlock; > + > if (ev->data_status == LE_PA_DATA_COMPLETE && > !test_and_set_bit(HCI_CONN_PA_SYNC, &pa_sync->flags)) { > /* Notify iso layer */ > @@ -6993,6 +6996,8 @@ static void hci_le_big_sync_established_evt(struct hci_dev *hdev, void *data, > set_bit(HCI_CONN_PA_SYNC, &bis->flags); > > bis->sync_handle = conn->sync_handle; > + bis->dst = conn->dst; > + bis->dst_type = conn->dst_type; > bis->iso_qos.bcast.big = ev->handle; > memset(&interval, 0, sizeof(interval)); > memcpy(&interval, ev->latency, sizeof(ev->latency)); > @@ -7038,13 +7043,6 @@ static void hci_le_big_info_adv_report_evt(struct hci_dev *hdev, void *data, > > hci_dev_lock(hdev); > > - mask |= hci_proto_connect_ind(hdev, BDADDR_ANY, BIS_LINK, &flags); > - if (!(mask & HCI_LM_ACCEPT)) > - goto unlock; > - > - if (!(flags & HCI_PROTO_DEFER)) > - goto unlock; > - > pa_sync = hci_conn_hash_lookup_pa_sync_handle > (hdev, > le16_to_cpu(ev->sync_handle)); > @@ -7054,6 +7052,13 @@ static void hci_le_big_info_adv_report_evt(struct hci_dev *hdev, void *data, > > pa_sync->iso_qos.bcast.encryption = ev->encryption; > > + mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); > + if (!(mask & HCI_LM_ACCEPT)) > + goto unlock; > + > + if (!(flags & HCI_PROTO_DEFER)) > + goto unlock; > + > /* Notify iso layer */ > hci_connect_cfm(pa_sync, 0); > > diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c > index 6e2c752aaa8f..1dc233f04dbe 100644 > --- a/net/bluetooth/iso.c > +++ b/net/bluetooth/iso.c > @@ -641,11 +641,12 @@ static struct sock *iso_get_sock(bdaddr_t *src, bdaddr_t *dst, > continue; > > /* Exact match. */ > - if (!bacmp(&iso_pi(sk)->src, src)) { > + if (!bacmp(&iso_pi(sk)->src, src) > + && !bacmp(&iso_pi(sk)->dst, dst) > + ){ > sock_hold(sk); > break; > } > - > /* Closest match */ > if (!bacmp(&iso_pi(sk)->src, BDADDR_ANY)) { > if (sk1) > @@ -1962,7 +1963,7 @@ static void iso_conn_ready(struct iso_conn *conn) > } > > if (!parent) > - parent = iso_get_sock(&hcon->src, BDADDR_ANY, > + parent = iso_get_sock(&hcon->src, &hcon->dst, > BT_LISTEN, NULL, NULL); > > if (!parent) > @@ -2203,6 +2204,11 @@ int iso_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 *flags) > } else { > sk = iso_get_sock(&hdev->bdaddr, BDADDR_ANY, > BT_LISTEN, NULL, NULL); > + if (!sk) > + sk = iso_get_sock(&hdev->bdaddr, bdaddr, > + BT_LISTEN, NULL, NULL); > + else > + iso_pi(sk)->dst = *bdaddr; > } > > done: ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS 2025-05-07 7:46 ` Paul Menzel @ 2025-05-08 2:06 ` Yang Li 0 siblings, 0 replies; 6+ messages in thread From: Yang Li @ 2025-05-08 2:06 UTC (permalink / raw) To: Paul Menzel Cc: Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz, linux-bluetooth, linux-kernel Hi Paul, > [ EXTERNAL EMAIL ] > > Dear Yang, > > > Thank you for your patch. > > Am 07.05.25 um 09:30 schrieb Yang Li via B4 Relay: >> From: Yang Li <yang.li@amlogic.com> > > It’d be great if you could start by describing the problem. Sorry for the confusion—I initially thought the linked BlueZ issue provided enough detail. To clarify: the problem occurs when the DUT is acting as a sink device. If a BIS already exists, and a CIS connection is then created, the kernel mistakenly references the BIS socket. This happens because the socket selection only checks for |state == BT_LISTEN|, without further distinguishing between BIS and CIS contexts. To resolve this, I believe the destination address (|dst addr|) should also be matched when retrieving the ISO socket, so BIS and CIS sockets can be properly differentiated. > >> The iso_get_sock function adds dst address matching to >> distinguish BIS and CIS sockets. >> >> Link: https://github.com/bluez/bluez/issues/1224 > > How can this patch be tested? DUT environment:BlueZ 5.82+pipewire 1.3.83+kernel 6.12 Assistant:Redmi K70 phone BIS Source:1BIG 2BISes Steps to reproduce: 1> Use K70 mobile phone to connect to DUT, and configure BIS source for DUT as Assistant, and DUT audio plays normally; 2> Do not end listening, K70 mobile phone plays music, DUT still uses BIS source audio, check HCI log, CIS link is disconnected; After testing, the modification resolves the issue I encountered. However, I'm not certain whether this approach might introduce new issues elsewhere. > >> Signed-off-by: Yang Li <yang.li@amlogic.com> >> --- >> net/bluetooth/hci_event.c | 35 ++++++++++++++++++++--------------- >> net/bluetooth/iso.c | 12 +++++++++--- >> 2 files changed, 29 insertions(+), 18 deletions(-) >> >> diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c >> index 66052d6aaa1d..c1f32e98ef8a 100644 >> --- a/net/bluetooth/hci_event.c >> +++ b/net/bluetooth/hci_event.c >> @@ -6413,6 +6413,8 @@ static void >> hci_le_pa_sync_estabilished_evt(struct hci_dev *hdev, void *data, >> >> conn->sync_handle = le16_to_cpu(ev->handle); >> conn->sid = HCI_SID_INVALID; >> + conn->dst = ev->bdaddr; >> + conn->dst_type = ev->bdaddr_type; >> >> mask |= hci_proto_connect_ind(hdev, &ev->bdaddr, BIS_LINK, >> &flags); >> @@ -6425,7 +6427,8 @@ static void >> hci_le_pa_sync_estabilished_evt(struct hci_dev *hdev, void *data, >> goto unlock; >> >> /* Add connection to indicate PA sync event */ >> - pa_sync = hci_conn_add_unset(hdev, BIS_LINK, BDADDR_ANY, >> + > > Why the extra blank line? Sorry, I will remove this modification in the next version. > >> + pa_sync = hci_conn_add_unset(hdev, BIS_LINK, &ev->bdaddr, >> HCI_ROLE_SLAVE); >> >> if (IS_ERR(pa_sync)) > > > Kind regards, > > Paul > > >> @@ -6456,13 +6459,6 @@ static void hci_le_per_adv_report_evt(struct >> hci_dev *hdev, void *data, >> >> hci_dev_lock(hdev); >> >> - mask |= hci_proto_connect_ind(hdev, BDADDR_ANY, BIS_LINK, &flags); >> - if (!(mask & HCI_LM_ACCEPT)) >> - goto unlock; >> - >> - if (!(flags & HCI_PROTO_DEFER)) >> - goto unlock; >> - >> pa_sync = hci_conn_hash_lookup_pa_sync_handle >> (hdev, >> le16_to_cpu(ev->sync_handle)); >> @@ -6470,6 +6466,13 @@ static void hci_le_per_adv_report_evt(struct >> hci_dev *hdev, void *data, >> if (!pa_sync) >> goto unlock; >> >> + mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, >> &flags); >> + if (!(mask & HCI_LM_ACCEPT)) >> + goto unlock; >> + >> + if (!(flags & HCI_PROTO_DEFER)) >> + goto unlock; >> + >> if (ev->data_status == LE_PA_DATA_COMPLETE && >> !test_and_set_bit(HCI_CONN_PA_SYNC, &pa_sync->flags)) { >> /* Notify iso layer */ >> @@ -6993,6 +6996,8 @@ static void >> hci_le_big_sync_established_evt(struct hci_dev *hdev, void *data, >> set_bit(HCI_CONN_PA_SYNC, &bis->flags); >> >> bis->sync_handle = conn->sync_handle; >> + bis->dst = conn->dst; >> + bis->dst_type = conn->dst_type; >> bis->iso_qos.bcast.big = ev->handle; >> memset(&interval, 0, sizeof(interval)); >> memcpy(&interval, ev->latency, sizeof(ev->latency)); >> @@ -7038,13 +7043,6 @@ static void >> hci_le_big_info_adv_report_evt(struct hci_dev *hdev, void *data, >> >> hci_dev_lock(hdev); >> >> - mask |= hci_proto_connect_ind(hdev, BDADDR_ANY, BIS_LINK, &flags); >> - if (!(mask & HCI_LM_ACCEPT)) >> - goto unlock; >> - >> - if (!(flags & HCI_PROTO_DEFER)) >> - goto unlock; >> - >> pa_sync = hci_conn_hash_lookup_pa_sync_handle >> (hdev, >> le16_to_cpu(ev->sync_handle)); >> @@ -7054,6 +7052,13 @@ static void >> hci_le_big_info_adv_report_evt(struct hci_dev *hdev, void *data, >> >> pa_sync->iso_qos.bcast.encryption = ev->encryption; >> >> + mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, >> &flags); >> + if (!(mask & HCI_LM_ACCEPT)) >> + goto unlock; >> + >> + if (!(flags & HCI_PROTO_DEFER)) >> + goto unlock; >> + >> /* Notify iso layer */ >> hci_connect_cfm(pa_sync, 0); >> >> diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c >> index 6e2c752aaa8f..1dc233f04dbe 100644 >> --- a/net/bluetooth/iso.c >> +++ b/net/bluetooth/iso.c >> @@ -641,11 +641,12 @@ static struct sock *iso_get_sock(bdaddr_t *src, >> bdaddr_t *dst, >> continue; >> >> /* Exact match. */ >> - if (!bacmp(&iso_pi(sk)->src, src)) { >> + if (!bacmp(&iso_pi(sk)->src, src) >> + && !bacmp(&iso_pi(sk)->dst, dst) >> + ){ >> sock_hold(sk); >> break; >> } >> - >> /* Closest match */ >> if (!bacmp(&iso_pi(sk)->src, BDADDR_ANY)) { >> if (sk1) >> @@ -1962,7 +1963,7 @@ static void iso_conn_ready(struct iso_conn *conn) >> } >> >> if (!parent) >> - parent = iso_get_sock(&hcon->src, BDADDR_ANY, >> + parent = iso_get_sock(&hcon->src, &hcon->dst, >> BT_LISTEN, NULL, NULL); >> >> if (!parent) >> @@ -2203,6 +2204,11 @@ int iso_connect_ind(struct hci_dev *hdev, >> bdaddr_t *bdaddr, __u8 *flags) >> } else { >> sk = iso_get_sock(&hdev->bdaddr, BDADDR_ANY, >> BT_LISTEN, NULL, NULL); >> + if (!sk) >> + sk = iso_get_sock(&hdev->bdaddr, bdaddr, >> + BT_LISTEN, NULL, NULL); >> + else >> + iso_pi(sk)->dst = *bdaddr; >> } >> >> done: ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS 2025-05-07 7:30 [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS Yang Li via B4 Relay 2025-05-07 7:46 ` Paul Menzel @ 2025-05-08 6:54 ` kernel test robot 2025-05-08 15:30 ` Luiz Augusto von Dentz 1 sibling, 1 reply; 6+ messages in thread From: kernel test robot @ 2025-05-08 6:54 UTC (permalink / raw) To: Yang Li via B4 Relay, Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz Cc: oe-kbuild-all, linux-bluetooth, linux-kernel, Yang Li Hi Yang, kernel test robot noticed the following build errors: [auto build test ERROR on f3daca9b490154fbb0459848cc2ed61e8367bddc] url: https://github.com/intel-lab-lkp/linux/commits/Yang-Li-via-B4-Relay/Bluetooth-fix-socket-matching-ambiguity-between-BIS-and-CIS/20250507-153347 base: f3daca9b490154fbb0459848cc2ed61e8367bddc patch link: https://lore.kernel.org/r/20250507-iso-v1-1-6f60d243e037%40amlogic.com patch subject: [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20250508/202505081427.1Y3wyo7v-lkp@intel.com/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250508/202505081427.1Y3wyo7v-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202505081427.1Y3wyo7v-lkp@intel.com/ All errors (new ones prefixed by >>): net/bluetooth/hci_event.c: In function 'hci_le_per_adv_report_evt': >> net/bluetooth/hci_event.c:6469:60: error: 'ISO_LINK' undeclared (first use in this function); did you mean 'SCO_LINK'? 6469 | mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); | ^~~~~~~~ | SCO_LINK net/bluetooth/hci_event.c:6469:60: note: each undeclared identifier is reported only once for each function it appears in net/bluetooth/hci_event.c: In function 'hci_le_big_info_adv_report_evt': net/bluetooth/hci_event.c:7055:60: error: 'ISO_LINK' undeclared (first use in this function); did you mean 'SCO_LINK'? 7055 | mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); | ^~~~~~~~ | SCO_LINK vim +6469 net/bluetooth/hci_event.c 6449 6450 static void hci_le_per_adv_report_evt(struct hci_dev *hdev, void *data, 6451 struct sk_buff *skb) 6452 { 6453 struct hci_ev_le_per_adv_report *ev = data; 6454 int mask = hdev->link_mode; 6455 __u8 flags = 0; 6456 struct hci_conn *pa_sync; 6457 6458 bt_dev_dbg(hdev, "sync_handle 0x%4.4x", le16_to_cpu(ev->sync_handle)); 6459 6460 hci_dev_lock(hdev); 6461 6462 pa_sync = hci_conn_hash_lookup_pa_sync_handle 6463 (hdev, 6464 le16_to_cpu(ev->sync_handle)); 6465 6466 if (!pa_sync) 6467 goto unlock; 6468 > 6469 mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); 6470 if (!(mask & HCI_LM_ACCEPT)) 6471 goto unlock; 6472 6473 if (!(flags & HCI_PROTO_DEFER)) 6474 goto unlock; 6475 6476 if (ev->data_status == LE_PA_DATA_COMPLETE && 6477 !test_and_set_bit(HCI_CONN_PA_SYNC, &pa_sync->flags)) { 6478 /* Notify iso layer */ 6479 hci_connect_cfm(pa_sync, 0); 6480 6481 /* Notify MGMT layer */ 6482 mgmt_device_connected(hdev, pa_sync, NULL, 0); 6483 } 6484 6485 unlock: 6486 hci_dev_unlock(hdev); 6487 } 6488 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS 2025-05-08 6:54 ` kernel test robot @ 2025-05-08 15:30 ` Luiz Augusto von Dentz 2025-05-09 8:20 ` Yang Li 0 siblings, 1 reply; 6+ messages in thread From: Luiz Augusto von Dentz @ 2025-05-08 15:30 UTC (permalink / raw) To: kernel test robot Cc: Yang Li via B4 Relay, Marcel Holtmann, Johan Hedberg, oe-kbuild-all, linux-bluetooth, linux-kernel, Yang Li Hi, On Thu, May 8, 2025 at 2:54 AM kernel test robot <lkp@intel.com> wrote: > > Hi Yang, > > kernel test robot noticed the following build errors: > > [auto build test ERROR on f3daca9b490154fbb0459848cc2ed61e8367bddc] > > url: https://github.com/intel-lab-lkp/linux/commits/Yang-Li-via-B4-Relay/Bluetooth-fix-socket-matching-ambiguity-between-BIS-and-CIS/20250507-153347 > base: f3daca9b490154fbb0459848cc2ed61e8367bddc > patch link: https://lore.kernel.org/r/20250507-iso-v1-1-6f60d243e037%40amlogic.com > patch subject: [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS > config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20250508/202505081427.1Y3wyo7v-lkp@intel.com/config) > compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250508/202505081427.1Y3wyo7v-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202505081427.1Y3wyo7v-lkp@intel.com/ > > All errors (new ones prefixed by >>): > > net/bluetooth/hci_event.c: In function 'hci_le_per_adv_report_evt': > >> net/bluetooth/hci_event.c:6469:60: error: 'ISO_LINK' undeclared (first use in this function); did you mean 'SCO_LINK'? > 6469 | mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); > | ^~~~~~~~ > | SCO_LINK > net/bluetooth/hci_event.c:6469:60: note: each undeclared identifier is reported only once for each function it appears in > net/bluetooth/hci_event.c: In function 'hci_le_big_info_adv_report_evt': > net/bluetooth/hci_event.c:7055:60: error: 'ISO_LINK' undeclared (first use in this function); did you mean 'SCO_LINK'? > 7055 | mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); > | ^~~~~~~~ > | SCO_LINK > > > vim +6469 net/bluetooth/hci_event.c > > 6449 > 6450 static void hci_le_per_adv_report_evt(struct hci_dev *hdev, void *data, > 6451 struct sk_buff *skb) > 6452 { > 6453 struct hci_ev_le_per_adv_report *ev = data; > 6454 int mask = hdev->link_mode; > 6455 __u8 flags = 0; > 6456 struct hci_conn *pa_sync; > 6457 > 6458 bt_dev_dbg(hdev, "sync_handle 0x%4.4x", le16_to_cpu(ev->sync_handle)); > 6459 > 6460 hci_dev_lock(hdev); > 6461 > 6462 pa_sync = hci_conn_hash_lookup_pa_sync_handle > 6463 (hdev, > 6464 le16_to_cpu(ev->sync_handle)); > 6465 > 6466 if (!pa_sync) > 6467 goto unlock; > 6468 > > 6469 mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); > 6470 if (!(mask & HCI_LM_ACCEPT)) > 6471 goto unlock; > 6472 > 6473 if (!(flags & HCI_PROTO_DEFER)) > 6474 goto unlock; > 6475 > 6476 if (ev->data_status == LE_PA_DATA_COMPLETE && > 6477 !test_and_set_bit(HCI_CONN_PA_SYNC, &pa_sync->flags)) { > 6478 /* Notify iso layer */ > 6479 hci_connect_cfm(pa_sync, 0); > 6480 > 6481 /* Notify MGMT layer */ > 6482 mgmt_device_connected(hdev, pa_sync, NULL, 0); > 6483 } > 6484 > 6485 unlock: > 6486 hci_dev_unlock(hdev); > 6487 } > 6488 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki This is probably already solved by: https://github.com/bluez/bluetooth-next/commit/f3daca9b490154fbb0459848cc2ed61e8367bddc -- Luiz Augusto von Dentz ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS 2025-05-08 15:30 ` Luiz Augusto von Dentz @ 2025-05-09 8:20 ` Yang Li 0 siblings, 0 replies; 6+ messages in thread From: Yang Li @ 2025-05-09 8:20 UTC (permalink / raw) To: Luiz Augusto von Dentz, kernel test robot Cc: Yang Li via B4 Relay, Marcel Holtmann, Johan Hedberg, oe-kbuild-all, linux-bluetooth, linux-kernel Hi Luzi, > [ EXTERNAL EMAIL ] > > Hi, > > On Thu, May 8, 2025 at 2:54 AM kernel test robot <lkp@intel.com> wrote: >> Hi Yang, >> >> kernel test robot noticed the following build errors: >> >> [auto build test ERROR on f3daca9b490154fbb0459848cc2ed61e8367bddc] >> >> url: https://github.com/intel-lab-lkp/linux/commits/Yang-Li-via-B4-Relay/Bluetooth-fix-socket-matching-ambiguity-between-BIS-and-CIS/20250507-153347 >> base: f3daca9b490154fbb0459848cc2ed61e8367bddc >> patch link: https://lore.kernel.org/r/20250507-iso-v1-1-6f60d243e037%40amlogic.com >> patch subject: [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS >> config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20250508/202505081427.1Y3wyo7v-lkp@intel.com/config) >> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 >> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250508/202505081427.1Y3wyo7v-lkp@intel.com/reproduce) >> >> If you fix the issue in a separate patch/commit (i.e. not just a new version of >> the same patch/commit), kindly add following tags >> | Reported-by: kernel test robot <lkp@intel.com> >> | Closes: https://lore.kernel.org/oe-kbuild-all/202505081427.1Y3wyo7v-lkp@intel.com/ >> >> All errors (new ones prefixed by >>): >> >> net/bluetooth/hci_event.c: In function 'hci_le_per_adv_report_evt': >>>> net/bluetooth/hci_event.c:6469:60: error: 'ISO_LINK' undeclared (first use in this function); did you mean 'SCO_LINK'? >> 6469 | mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); >> | ^~~~~~~~ >> | SCO_LINK >> net/bluetooth/hci_event.c:6469:60: note: each undeclared identifier is reported only once for each function it appears in >> net/bluetooth/hci_event.c: In function 'hci_le_big_info_adv_report_evt': >> net/bluetooth/hci_event.c:7055:60: error: 'ISO_LINK' undeclared (first use in this function); did you mean 'SCO_LINK'? >> 7055 | mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); >> | ^~~~~~~~ >> | SCO_LINK >> >> >> vim +6469 net/bluetooth/hci_event.c >> >> 6449 >> 6450 static void hci_le_per_adv_report_evt(struct hci_dev *hdev, void *data, >> 6451 struct sk_buff *skb) >> 6452 { >> 6453 struct hci_ev_le_per_adv_report *ev = data; >> 6454 int mask = hdev->link_mode; >> 6455 __u8 flags = 0; >> 6456 struct hci_conn *pa_sync; >> 6457 >> 6458 bt_dev_dbg(hdev, "sync_handle 0x%4.4x", le16_to_cpu(ev->sync_handle)); >> 6459 >> 6460 hci_dev_lock(hdev); >> 6461 >> 6462 pa_sync = hci_conn_hash_lookup_pa_sync_handle >> 6463 (hdev, >> 6464 le16_to_cpu(ev->sync_handle)); >> 6465 >> 6466 if (!pa_sync) >> 6467 goto unlock; >> 6468 >>> 6469 mask |= hci_proto_connect_ind(hdev, &pa_sync->dst, ISO_LINK, &flags); >> 6470 if (!(mask & HCI_LM_ACCEPT)) >> 6471 goto unlock; >> 6472 >> 6473 if (!(flags & HCI_PROTO_DEFER)) >> 6474 goto unlock; >> 6475 >> 6476 if (ev->data_status == LE_PA_DATA_COMPLETE && >> 6477 !test_and_set_bit(HCI_CONN_PA_SYNC, &pa_sync->flags)) { >> 6478 /* Notify iso layer */ >> 6479 hci_connect_cfm(pa_sync, 0); >> 6480 >> 6481 /* Notify MGMT layer */ >> 6482 mgmt_device_connected(hdev, pa_sync, NULL, 0); >> 6483 } >> 6484 >> 6485 unlock: >> 6486 hci_dev_unlock(hdev); >> 6487 } >> 6488 >> >> -- >> 0-DAY CI Kernel Test Service >> https://github.com/intel/lkp-tests/wiki > This is probably already solved by: > > https://github.com/bluez/bluetooth-next/commit/f3daca9b490154fbb0459848cc2ed61e8367bddc I'm currently working with kernel 6.12, but this patch seems to conflict with it. Do you know if there's a plan to backport it to v6.12? > > -- > Luiz Augusto von Dentz ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-05-09 8:21 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-05-07 7:30 [PATCH] Bluetooth: fix socket matching ambiguity between BIS and CIS Yang Li via B4 Relay 2025-05-07 7:46 ` Paul Menzel 2025-05-08 2:06 ` Yang Li 2025-05-08 6:54 ` kernel test robot 2025-05-08 15:30 ` Luiz Augusto von Dentz 2025-05-09 8:20 ` Yang Li
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®