Linux bluetooth development
 help / color / mirror / Atom feed
* [bug report] Bluetooth: btusb: Add support for Qualcomm multi-subsystem QCC2072
@ 2026-09-17 19:15 Dan Carpenter
  2026-09-17 19:17 ` Dan Carpenter
  0 siblings, 1 reply; 6+ messages in thread
From: Dan Carpenter @ 2026-09-17 19:15 UTC (permalink / raw)
  To: Zijun Hu; +Cc: linux-bluetooth

Hello Zijun Hu,

Commit 2e63b55654e0 ("Bluetooth: btusb: Add support for Qualcomm
multi-subsystem QCC2072") from Sep 13, 2026 (linux-next), leads to
the following Smatch static checker warning:

	drivers/bluetooth/btusb_qcom.c:2516 btqcom_set_bdaddr()
	warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'

drivers/bluetooth/btusb_qcom.c
    2507   *
    2508   * Return: 0 on success, or a negative errno on failure.
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    2509   */
    2510 static int btqcom_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr)
    2511 {
    2512         int ret;
    2513 
    2514         ret = __hci_reset_sync(hdev);
    2515         if (ret) {
--> 2516                 bt_dev_err(hdev, "HCI reset before setting BD_ADDR failed: %pe",
    2517                            ERR_PTR(ret));
    2518                 return ret;

ret comes from skb->data in __hci_cmd_sync_status_sk() so it's a u8 and
not necessarily a negative error code.

    2519         }
    2520 
    2521         ret = qbt_write_bda(hdev, bdaddr);
    2522 
    2523         return ret;
    2524 }

This email is a free service from the Smatch-CI project [smatch.sf.net].

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [bug report] Bluetooth: btusb: Add support for Qualcomm multi-subsystem QCC2072
  2026-09-17 19:15 [bug report] Bluetooth: btusb: Add support for Qualcomm multi-subsystem QCC2072 Dan Carpenter
@ 2026-09-17 19:17 ` Dan Carpenter
  2026-09-19  2:36   ` Zijun Hu
  0 siblings, 1 reply; 6+ messages in thread
From: Dan Carpenter @ 2026-09-17 19:17 UTC (permalink / raw)
  To: Zijun Hu; +Cc: linux-bluetooth

On Thu, Sep 17, 2026 at 10:15:22PM +0300, Dan Carpenter wrote:
> Hello Zijun Hu,
> 
> Commit 2e63b55654e0 ("Bluetooth: btusb: Add support for Qualcomm
> multi-subsystem QCC2072") from Sep 13, 2026 (linux-next), leads to
> the following Smatch static checker warning:
> 
> 	drivers/bluetooth/btusb_qcom.c:2516 btqcom_set_bdaddr()
> 	warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
> 

See also:

drivers/bluetooth/btusb_qcom.c:2931 btusb_qcom_shutdown_unified() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
drivers/bluetooth/btusb_qcom.c:2947 btusb_qcom_shutdown_unified() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
drivers/bluetooth/btusb_qcom.c:3562 btusb_post_download_unified_bt() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
drivers/bluetooth/btusb_qcom.c:3977 btusb_qcom_setup_unified() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [bug report] Bluetooth: btusb: Add support for Qualcomm multi-subsystem QCC2072
  2026-09-17 19:17 ` Dan Carpenter
@ 2026-09-19  2:36   ` Zijun Hu
  2026-09-19  5:07     ` Dan Carpenter
  0 siblings, 1 reply; 6+ messages in thread
From: Zijun Hu @ 2026-09-19  2:36 UTC (permalink / raw)
  To: Dan Carpenter; +Cc: linux-bluetooth

On 9/18/2026 3:17 AM, Dan Carpenter wrote:
> See also:
> 
> drivers/bluetooth/btusb_qcom.c:2931 btusb_qcom_shutdown_unified() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
> drivers/bluetooth/btusb_qcom.c:2947 btusb_qcom_shutdown_unified() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
> drivers/bluetooth/btusb_qcom.c:3562 btusb_post_download_unified_bt() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
> drivers/bluetooth/btusb_qcom.c:3977 btusb_qcom_setup_unified() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'

Thanks for the report.

But All reported cases are false positives: __hci_reset_sync() always returns
0 or a negative errno, *never* a positive value.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [bug report] Bluetooth: btusb: Add support for Qualcomm multi-subsystem QCC2072
  2026-09-19  2:36   ` Zijun Hu
@ 2026-09-19  5:07     ` Dan Carpenter
  2026-09-19  7:04       ` Zijun Hu
  0 siblings, 1 reply; 6+ messages in thread
From: Dan Carpenter @ 2026-09-19  5:07 UTC (permalink / raw)
  To: Zijun Hu; +Cc: linux-bluetooth

On Sat, Sep 19, 2026 at 10:36:37AM +0800, Zijun Hu wrote:
> On 9/18/2026 3:17 AM, Dan Carpenter wrote:
> > See also:
> > 
> > drivers/bluetooth/btusb_qcom.c:2931 btusb_qcom_shutdown_unified() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
> > drivers/bluetooth/btusb_qcom.c:2947 btusb_qcom_shutdown_unified() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
> > drivers/bluetooth/btusb_qcom.c:3562 btusb_post_download_unified_bt() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
> > drivers/bluetooth/btusb_qcom.c:3977 btusb_qcom_setup_unified() warn: passing positive error code '(-4095)-(-62),(-60)-(-1),1-255' to 'ERR_PTR'
> 
> Thanks for the report.
> 
> But All reported cases are false positives: __hci_reset_sync() always returns
> 0 or a negative errno, *never* a positive value.

The return values come from here.

net/bluetooth/hci_sync.c
   256  int __hci_cmd_sync_status_sk(struct hci_dev *hdev, u16 opcode, u32 plen,
   257                               const void *param, u8 event, u32 timeout,
   258                               struct sock *sk)
   259  {
   260          struct sk_buff *skb;
   261          u8 status;
   262  
   263          skb = __hci_cmd_sync_sk(hdev, opcode, plen, param, event, timeout, sk);
   264  
   265          /* If command return a status event, skb will be set to -ENODATA */
   266          if (skb == ERR_PTR(-ENODATA))
   267                  return 0;
                        ^^^^^^^^

Zero, sure.

   268  
   269          if (IS_ERR(skb)) {
   270                  if (!event)
   271                          bt_dev_err(hdev, "Opcode 0x%4.4x failed: %ld", opcode,
   272                                     PTR_ERR(skb));
   273                  return PTR_ERR(skb);
                        ^^^^^^^^^^^^^^^^^^^
Error pointer.  Fine.

   274          }
   275  
   276          status = skb->data[0];
   277  
   278          kfree_skb(skb);
   279  
   280          return status;
                ^^^^^^^^^^^^^
But this seems like it could be a positive...

   281  }

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [bug report] Bluetooth: btusb: Add support for Qualcomm multi-subsystem QCC2072
  2026-09-19  5:07     ` Dan Carpenter
@ 2026-09-19  7:04       ` Zijun Hu
  2026-09-19 10:43         ` Dan Carpenter
  0 siblings, 1 reply; 6+ messages in thread
From: Zijun Hu @ 2026-09-19  7:04 UTC (permalink / raw)
  To: Dan Carpenter; +Cc: linux-bluetooth

On 9/19/2026 1:07 PM, Dan Carpenter wrote:
> Zero, sure.
> 
>    268  
>    269          if (IS_ERR(skb)) {
>    270                  if (!event)
>    271                          bt_dev_err(hdev, "Opcode 0x%4.4x failed: %ld", opcode,
>    272                                     PTR_ERR(skb));
>    273                  return PTR_ERR(skb);
>                         ^^^^^^^^^^^^^^^^^^^
> Error pointer.  Fine.
> 
>    274          }
>    275  
>    276          status = skb->data[0];
>    277  
>    278          kfree_skb(skb);
>    279  
>    280          return status;
>                 ^^^^^^^^^^^^^
> But this seems like it could be a positive...
> 

For HCI_OP_RESET, execution cannot reach this point when status != 0.

>    281  }


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [bug report] Bluetooth: btusb: Add support for Qualcomm multi-subsystem QCC2072
  2026-09-19  7:04       ` Zijun Hu
@ 2026-09-19 10:43         ` Dan Carpenter
  0 siblings, 0 replies; 6+ messages in thread
From: Dan Carpenter @ 2026-09-19 10:43 UTC (permalink / raw)
  To: Zijun Hu; +Cc: linux-bluetooth

On Sat, Sep 19, 2026 at 03:04:06PM +0800, Zijun Hu wrote:
> On 9/19/2026 1:07 PM, Dan Carpenter wrote:
> > Zero, sure.
> > 
> >    268  
> >    269          if (IS_ERR(skb)) {
> >    270                  if (!event)
> >    271                          bt_dev_err(hdev, "Opcode 0x%4.4x failed: %ld", opcode,
> >    272                                     PTR_ERR(skb));
> >    273                  return PTR_ERR(skb);
> >                         ^^^^^^^^^^^^^^^^^^^
> > Error pointer.  Fine.
> > 
> >    274          }
> >    275  
> >    276          status = skb->data[0];
> >    277  
> >    278          kfree_skb(skb);
> >    279  
> >    280          return status;
> >                 ^^^^^^^^^^^^^
> > But this seems like it could be a positive...
> > 
> 
> For HCI_OP_RESET, execution cannot reach this point when status != 0.
> 
> >    281  }

Actually even for the other opcodes it looks like doing:

	status = skb->data[0];
	return status;

is just a more complicated way to write "return 0;".  :/

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-09-19 10:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-17 19:15 [bug report] Bluetooth: btusb: Add support for Qualcomm multi-subsystem QCC2072 Dan Carpenter
2026-09-17 19:17 ` Dan Carpenter
2026-09-19  2:36   ` Zijun Hu
2026-09-19  5:07     ` Dan Carpenter
2026-09-19  7:04       ` Zijun Hu
2026-09-19 10:43         ` Dan Carpenter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox