Skip to contentSkip to conversation

Bluetooth: Introduce Qualcomm WCNSS SMD based HCI driver

bug report Dan Carpenter 1 participant 1 message Sep 26, 2018 Bluetooth drivers

lore
Share & tools
lore
#0 lore raw

Hello Bjorn Andersson,

The patch 1511cc750c3d: "Bluetooth: Introduce Qualcomm WCNSS SMD based HCI driver" from Aug 12, 2016, leads to the following static checker warning:

	drivers/bluetooth/btqcomsmd.c:164 btqcomsmd_probe()
	warn: 'btq->acl_channel' isn't an ERR_PTR

drivers/bluetooth/btqcomsmd.c
149 static int btqcomsmd_probe(struct platform_device *pdev) 150 {

   151          struct btqcomsmd *btq;
   152          struct hci_dev *hdev;
   153          void *wcnss;
   154          int ret;

155
156 btq = devm_kzalloc(&pdev->dev, sizeof(*btq), GFP_KERNEL);
157 if (!btq)
158 return -ENOMEM;
159
160 wcnss = dev_get_drvdata(pdev->dev.parent);
161
162 btq->acl_channel = qcom_wcnss_open_channel(wcnss, "APPS_RIVA_BT_ACL",
163 btqcomsmd_acl_callback, btq);
164 if (IS_ERR(btq->acl_channel))
165 return PTR_ERR(btq->acl_channel);

The qcom_wcnss_open_channel() returns error pointers if the CONFIG is disabled, otherwise it returns NULL on error. That seems like a design mistake to me... Anyway, it leads to a bug here.

166
167 btq->cmd_channel = qcom_wcnss_open_channel(wcnss, "APPS_RIVA_BT_CMD",
168 btqcomsmd_cmd_callback, btq);
169 if (IS_ERR(btq->cmd_channel))
170 return PTR_ERR(btq->cmd_channel);
171
172 /* The local-bd-address property is usually injected by the

regards,
dan carpenter