* [bug report] Bluetooth: Allow usb to auto-suspend when SCO use non-HCI transport
@ 2021-09-09 9:02 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2021-09-09 9:02 UTC (permalink / raw)
To: chethan.tumkur.narayan; +Cc: linux-bluetooth
Hello Chethan T N,
The patch f4f9fa0c07bb: "Bluetooth: Allow usb to auto-suspend when
SCO use non-HCI transport" from Sep 7, 2021, leads to the following
Smatch static checker warning:
net/bluetooth/hci_event.c:4534 hci_sync_conn_complete_evt()
error: uninitialized symbol 'notify_evt'.
net/bluetooth/hci_event.c
4442 static void hci_sync_conn_complete_evt(struct hci_dev *hdev,
4443 struct sk_buff *skb)
4444 {
4445 struct hci_ev_sync_conn_complete *ev = (void *) skb->data;
4446 struct hci_conn *conn;
4447 unsigned int notify_evt;
4448
4449 BT_DBG("%s status 0x%2.2x", hdev->name, ev->status);
4450
4451 hci_dev_lock(hdev);
4452
4453 conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr);
4454 if (!conn) {
4455 if (ev->link_type == ESCO_LINK)
4456 goto unlock;
4457
4458 /* When the link type in the event indicates SCO connection
4459 * and lookup of the connection object fails, then check
4460 * if an eSCO connection object exists.
4461 *
4462 * The core limits the synchronous connections to either
4463 * SCO or eSCO. The eSCO connection is preferred and tried
4464 * to be setup first and until successfully established,
4465 * the link type will be hinted as eSCO.
4466 */
4467 conn = hci_conn_hash_lookup_ba(hdev, ESCO_LINK, &ev->bdaddr);
4468 if (!conn)
4469 goto unlock;
4470 }
4471
4472 switch (ev->status) {
4473 case 0x00:
4474 /* The synchronous connection complete event should only be
4475 * sent once per new connection. Receiving a successful
4476 * complete event when the connection status is already
4477 * BT_CONNECTED means that the device is misbehaving and sent
4478 * multiple complete event packets for the same new connection.
4479 *
4480 * Registering the device more than once can corrupt kernel
4481 * memory, hence upon detecting this invalid event, we report
4482 * an error and ignore the packet.
4483 */
4484 if (conn->state == BT_CONNECTED) {
4485 bt_dev_err(hdev, "Ignoring connect complete event for existing connection");
4486 goto unlock;
4487 }
4488
4489 conn->handle = __le16_to_cpu(ev->handle);
4490 conn->state = BT_CONNECTED;
4491 conn->type = ev->link_type;
4492
4493 hci_debugfs_create_conn(conn);
4494 hci_conn_add_sysfs(conn);
4495 break;
4496
4497 case 0x10: /* Connection Accept Timeout */
4498 case 0x0d: /* Connection Rejected due to Limited Resources */
4499 case 0x11: /* Unsupported Feature or Parameter Value */
4500 case 0x1c: /* SCO interval rejected */
4501 case 0x1a: /* Unsupported Remote Feature */
4502 case 0x1e: /* Invalid LMP Parameters */
4503 case 0x1f: /* Unspecified error */
4504 case 0x20: /* Unsupported LMP Parameter value */
4505 if (conn->out) {
4506 conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) |
4507 (hdev->esco_type & EDR_ESCO_MASK);
4508 if (hci_setup_sync(conn, conn->link->handle))
4509 goto unlock;
4510 }
4511 fallthrough;
4512
4513 default:
4514 conn->state = BT_CLOSED;
4515 break;
4516 }
4517
4518 bt_dev_dbg(hdev, "SCO connected with air mode: %02x", ev->air_mode);
4519
4520 switch (ev->air_mode) {
4521 case 0x02:
4522 notify_evt = HCI_NOTIFY_ENABLE_SCO_CVSD;
4523 break;
4524 case 0x03:
4525 notify_evt = HCI_NOTIFY_ENABLE_SCO_TRANSP;
4526 break;
notify_evt not initlaised on default: case.
4527 }
4528
4529 /* Notify only in case of SCO over HCI transport data path which
4530 * is zero and non-zero value shall be non-HCI transport data path
4531 */
4532 if (conn->codec.data_path == 0) {
4533 if (hdev->notify)
--> 4534 hdev->notify(hdev, notify_evt);
4535 }
4536
4537 hci_connect_cfm(conn, ev->status);
4538 if (ev->status)
4539 hci_conn_del(conn);
4540
4541 unlock:
4542 hci_dev_unlock(hdev);
4543 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-09-09 9:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-09 9:02 [bug report] Bluetooth: Allow usb to auto-suspend when SCO use non-HCI transport Dan Carpenter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.