aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2013-10-10 13:02:08 -0400
committerJohan Hedberg <johan.hedberg@intel.com>2013-10-10 16:08:37 -0400
commit5b69bef541318857881c84958e01c7d96bfaf8d3 (patch)
tree84914ade6e47a0f7b89679d1380ba6e943c77aa5
parent014f7bc78738d86e156635d5ac239e199573df66 (diff)
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>
-rw-r--r--net/bluetooth/hci_core.c10
-rw-r--r--net/bluetooth/hci_sock.c3
2 files changed, 13 insertions, 0 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 0c636ba1ba16..593b4efb1d7f 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1048,6 +1048,11 @@ int hci_inquiry(void __user *arg)
1048 goto done; 1048 goto done;
1049 } 1049 }
1050 1050
1051 if (hdev->dev_type != HCI_BREDR) {
1052 err = -EOPNOTSUPP;
1053 goto done;
1054 }
1055
1051 if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) { 1056 if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) {
1052 err = -EOPNOTSUPP; 1057 err = -EOPNOTSUPP;
1053 goto done; 1058 goto done;
@@ -1533,6 +1538,11 @@ int hci_dev_cmd(unsigned int cmd, void __user *arg)
1533 goto done; 1538 goto done;
1534 } 1539 }
1535 1540
1541 if (hdev->dev_type != HCI_BREDR) {
1542 err = -EOPNOTSUPP;
1543 goto done;
1544 }
1545
1536 if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) { 1546 if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) {
1537 err = -EOPNOTSUPP; 1547 err = -EOPNOTSUPP;
1538 goto done; 1548 goto done;
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
index 579886186c3a..5b2d3f3c9b67 100644
--- a/net/bluetooth/hci_sock.c
+++ b/net/bluetooth/hci_sock.c
@@ -518,6 +518,9 @@ static int hci_sock_bound_ioctl(struct sock *sk, unsigned int cmd,
518 if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) 518 if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags))
519 return -EBUSY; 519 return -EBUSY;
520 520
521 if (hdev->dev_type != HCI_BREDR)
522 return -EOPNOTSUPP;
523
521 switch (cmd) { 524 switch (cmd) {
522 case HCISETRAW: 525 case HCISETRAW:
523 if (!capable(CAP_NET_ADMIN)) 526 if (!capable(CAP_NET_ADMIN))