Subject: Re: Coverity: btusb_work(): Null pointer dereferences

From: Kees Cook <[email-masked]>
Date: Tue, 7 Apr 2020 11:14:09 -0700

On Tue, Apr 07, 2020 at 10:54:22AM +0000, Narasimman, Sathish wrote:
> Hi
> 
> I think this is False Positive.
> 
> In the function btusb_probe the memory allocation is happened and verified for NULL.
> I don't this so checking for NULL evey time is required.
> 
> Sample code snip
> 
> In function "btusb_probe"
> {
>         data = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL);
>         if (!data)
>                 return -ENOMEM;
> ....
>        INIT_WORK(&data->work, btusb_work);
> 
> }

This warning is talking about data->isoc, which is checked for NULL in
other places before the call to btusb_find_altsetting(), which doesn't
check for NULL.

-Kees

> 
> 
> Regards
> Sathish N
> 
> -----Original Message-----
> From: coverity-bot <[email-masked]> 
> Sent: Monday, April 6, 2020 9:20 PM
> To: Narasimman, Sathish <[email-masked]>
> Cc: Marcel Holtmann <[email-masked]>; Tumkur Narayan, Chethan <[email-masked]>; lkp <[email-masked]>; Bag, Amit K <[email-masked]>; Hsin-Yu Chao <[email-masked]>; Hedberg, Johan <[email-masked]>; Gustavo A. R. Silva <[email-masked]>; [email-masked]
> Subject: Coverity: btusb_work(): Null pointer dereferences
> 
> Hello!
> 
> This is an experimental automated report about issues detected by Coverity from a scan of next-20200406 as part of the linux-next weekly scan project:
> https://scan.coverity.com/projects/linux-next-weekly-scan
> 
> You're getting this email because you were associated with the identified lines of code (noted below) that were touched by recent commits:
> 
> baac6276c0a9 ("Bluetooth: btusb: handle mSBC audio over USB Endpoints")
> 
> Coverity reported the following:
> 
> *** CID 1492498:  Null pointer dereferences  (FORWARD_NULL)
> /drivers/bluetooth/btusb.c: 1665 in btusb_work()
> 1659     			}
> 1660     		} else if (data->air_mode == HCI_NOTIFY_ENABLE_SCO_TRANSP) {
> 1661
> 1662     			data->usb_alt6_packet_flow = true;
> 1663
> 1664     			/* Check if Alt 6 is supported for Transparent audio */
> vvv     CID 1492498:  Null pointer dereferences  (FORWARD_NULL)
> vvv     Passing "data" to "btusb_find_altsetting", which dereferences null "data->isoc".
> 1665     			if (btusb_find_altsetting(data, 6))
> 1666     				new_alts = 6;
> 1667     			else
> 1668     				bt_dev_err(hdev, "Device does not support ALT setting 6");
> 1669     		}
> 1670
> 
> If this is a false positive, please let us know so we can mark it as such, or teach the Coverity rules to be smarter. If not, please make sure fixes get into linux-next. :) For patches fixing this, please include these lines (but double-check the "Fixes" first):
> 
> Reported-by: coverity-bot <[email-masked]>
> Addresses-Coverity-ID: 1492498 ("Null pointer dereferences")
> Fixes: baac6276c0a9 ("Bluetooth: btusb: handle mSBC audio over USB Endpoints")
> 
> 
> Thanks for your attention!
> 
> --
> Coverity-bot

-- 
Kees Cook