Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Bluetooth: Fix usage of __hci_cmd_sync_status

__hci_cmd_sync_status shall only be used if hci_req_sync_lock is _not_
required which is not the case of hci_dev_cmd so it needs to use
hci_cmd_sync_status which uses hci_req_sync_lock internally.

Fixes: f1a8f402f13f ("Bluetooth: L2CAP: Fix deadlock")
Reported-by: Pauli Virtanen <pav@iki.fi>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

+12 -15
+12 -15
net/bluetooth/hci_core.c
··· 718 718 719 719 switch (cmd) { 720 720 case HCISETAUTH: 721 - err = __hci_cmd_sync_status(hdev, HCI_OP_WRITE_AUTH_ENABLE, 722 - 1, &dr.dev_opt, HCI_CMD_TIMEOUT); 721 + err = hci_cmd_sync_status(hdev, HCI_OP_WRITE_AUTH_ENABLE, 722 + 1, &dr.dev_opt, HCI_CMD_TIMEOUT); 723 723 break; 724 724 725 725 case HCISETENCRYPT: ··· 730 730 731 731 if (!test_bit(HCI_AUTH, &hdev->flags)) { 732 732 /* Auth must be enabled first */ 733 - err = __hci_cmd_sync_status(hdev, 734 - HCI_OP_WRITE_AUTH_ENABLE, 735 - 1, &dr.dev_opt, 736 - HCI_CMD_TIMEOUT); 733 + err = hci_cmd_sync_status(hdev, 734 + HCI_OP_WRITE_AUTH_ENABLE, 735 + 1, &dr.dev_opt, 736 + HCI_CMD_TIMEOUT); 737 737 if (err) 738 738 break; 739 739 } 740 740 741 - err = __hci_cmd_sync_status(hdev, HCI_OP_WRITE_ENCRYPT_MODE, 742 - 1, &dr.dev_opt, 743 - HCI_CMD_TIMEOUT); 741 + err = hci_cmd_sync_status(hdev, HCI_OP_WRITE_ENCRYPT_MODE, 742 + 1, &dr.dev_opt, HCI_CMD_TIMEOUT); 744 743 break; 745 744 746 745 case HCISETSCAN: 747 - err = __hci_cmd_sync_status(hdev, HCI_OP_WRITE_SCAN_ENABLE, 748 - 1, &dr.dev_opt, 749 - HCI_CMD_TIMEOUT); 746 + err = hci_cmd_sync_status(hdev, HCI_OP_WRITE_SCAN_ENABLE, 747 + 1, &dr.dev_opt, HCI_CMD_TIMEOUT); 750 748 751 749 /* Ensure that the connectable and discoverable states 752 750 * get correctly modified as this was a non-mgmt change. ··· 756 758 case HCISETLINKPOL: 757 759 policy = cpu_to_le16(dr.dev_opt); 758 760 759 - err = __hci_cmd_sync_status(hdev, HCI_OP_WRITE_DEF_LINK_POLICY, 760 - 2, &policy, 761 - HCI_CMD_TIMEOUT); 761 + err = hci_cmd_sync_status(hdev, HCI_OP_WRITE_DEF_LINK_POLICY, 762 + 2, &policy, HCI_CMD_TIMEOUT); 762 763 break; 763 764 764 765 case HCISETLINKMODE: