Re: [PATCH] Bluetooth: hci_sync: add conditional locking annotations
Nathan Chancellor <[email protected]>
| Newsgroups | org.kernel.vger.linux-bluetooth |
|---|---|
| Message-ID | <20260811204327.GA1477601@ax162> |
On Fri, Jul 31, 2026 at 03:18:45PM -0700, Nathan Chancellor wrote:
> On Sat, Jul 25, 2026 at 01:02:36PM +0300, Pauli Virtanen wrote:
> > Add context analysis annotations to functions doing conditional locking,
> > to suppress analysis warnings.
> >
> > Fixes: a3ad01d51d4b ("Bluetooth: hci_sync: Fix advertising data UAFs")
> > Signed-off-by: Pauli Virtanen <[email protected]>
>
> Tested-by: Nathan Chancellor <[email protected]> # build
>
> It would be nice if this could be applied, as this breaks recent clang
> builds due to context analysis being on by default and -Werror enabled
> by default with many configurations now:
>
> https://github.com/ClangBuiltLinux/continuous-integration2/actions/runs/30660246388
Ping? Our builds with clang-23 and clang-24 continue to be broken on
-next because of this.
https://github.com/ClangBuiltLinux/continuous-integration2/actions/runs/31525203557
https://github.com/ClangBuiltLinux/continuous-integration2/actions/runs/31526633508
> > ---
> > net/bluetooth/hci_sync.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
> > index d5554fbf3129..f5545f270f09 100644
> > --- a/net/bluetooth/hci_sync.c
> > +++ b/net/bluetooth/hci_sync.c
> > @@ -1255,6 +1255,7 @@ hci_set_ext_adv_params_sync(struct hci_dev *hdev, u8 instance,
> > }
> >
> > static int hci_set_ext_adv_data_sync(struct hci_dev *hdev, u8 instance)
> > + __context_unsafe(/* conditional locking */)
> > {
> > DEFINE_FLEX(struct hci_cp_le_set_ext_adv_data, pdu, data, length,
> > HCI_MAX_EXT_AD_LENGTH);
> > @@ -1343,6 +1344,7 @@ int hci_update_adv_data_sync(struct hci_dev *hdev, u8 instance)
> > }
> >
> > int hci_setup_ext_adv_instance_sync(struct hci_dev *hdev, u8 instance)
> > + __context_unsafe(/* conditional locking */)
> > {
> > struct hci_cp_le_set_ext_adv_params cp;
> > struct hci_rp_le_set_ext_adv_params rp;
> > @@ -1499,6 +1501,7 @@ int hci_setup_ext_adv_instance_sync(struct hci_dev *hdev, u8 instance)
> > }
> >
> > static int hci_set_ext_scan_rsp_data_sync(struct hci_dev *hdev, u8 instance)
> > + __context_unsafe(/* conditional locking */)
> > {
> > DEFINE_FLEX(struct hci_cp_le_set_ext_scan_rsp_data, pdu, data, length,
> > HCI_MAX_EXT_AD_LENGTH);
> > @@ -1552,6 +1555,7 @@ static int hci_set_ext_scan_rsp_data_sync(struct hci_dev *hdev, u8 instance)
> > }
> >
> > static int __hci_set_scan_rsp_data_sync(struct hci_dev *hdev, u8 instance)
> > + __context_unsafe(/* conditional locking */)
> > {
> > struct hci_cp_le_set_scan_rsp_data cp;
> > u8 len;
> > @@ -1693,6 +1697,7 @@ static int hci_set_per_adv_params_sync(struct hci_dev *hdev, u8 instance,
> > }
> >
> > static int hci_set_per_adv_data_sync(struct hci_dev *hdev, u8 instance)
> > + __context_unsafe(/* conditional locking */)
> > {
> > DEFINE_FLEX(struct hci_cp_le_set_per_adv_data, pdu, data, length,
> > HCI_MAX_PER_AD_LENGTH);
> > --
> > 2.55.0
> >
--
Cheers,
Nathan