Browse Source

Bluetooth: AMP contollers do not support the legacy ioctls

The legacy ioctls for device specific commands including inquiry are
not support by AMP controllers. So just reject them right away instead
of trying to send the HCI command and wait for failure from the
actual hardware.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Marcel Holtmann 12 năm trước cách đây
mục cha
commit
5b69bef541
2 tập tin đã thay đổi với 13 bổ sung0 xóa
  1. 10 0
      net/bluetooth/hci_core.c
  2. 3 0
      net/bluetooth/hci_sock.c

+ 10 - 0
net/bluetooth/hci_core.c

@@ -1048,6 +1048,11 @@ int hci_inquiry(void __user *arg)
 		goto done;
 		goto done;
 	}
 	}
 
 
+	if (hdev->dev_type != HCI_BREDR) {
+		err = -EOPNOTSUPP;
+		goto done;
+	}
+
 	if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) {
 	if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) {
 		err = -EOPNOTSUPP;
 		err = -EOPNOTSUPP;
 		goto done;
 		goto done;
@@ -1533,6 +1538,11 @@ int hci_dev_cmd(unsigned int cmd, void __user *arg)
 		goto done;
 		goto done;
 	}
 	}
 
 
+	if (hdev->dev_type != HCI_BREDR) {
+		err = -EOPNOTSUPP;
+		goto done;
+	}
+
 	if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) {
 	if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) {
 		err = -EOPNOTSUPP;
 		err = -EOPNOTSUPP;
 		goto done;
 		goto done;

+ 3 - 0
net/bluetooth/hci_sock.c

@@ -518,6 +518,9 @@ static int hci_sock_bound_ioctl(struct sock *sk, unsigned int cmd,
 	if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags))
 	if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags))
 		return -EBUSY;
 		return -EBUSY;
 
 
+	if (hdev->dev_type != HCI_BREDR)
+		return -EOPNOTSUPP;
+
 	switch (cmd) {
 	switch (cmd) {
 	case HCISETRAW:
 	case HCISETRAW:
 		if (!capable(CAP_NET_ADMIN))
 		if (!capable(CAP_NET_ADMIN))