Bluetooth: Restrict SSP setting changes to BR/EDR enabled controllers
authorMarcel Holtmann <marcel@holtmann.org>
Thu, 3 Oct 2013 04:31:52 +0000 (21:31 -0700)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 3 Oct 2013 06:20:37 +0000 (09:20 +0300)
Only when BR/EDR is supported and enabled, allow changing of the SSP
setting. Just checking if the hardware supports SSP is not enough
since it might be the case that BR/EDR is disabled.

In the case that BR/EDR is disabled, but SSP supported by the
controller the not supported error message is now returned.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
net/bluetooth/mgmt.c

index 3b3ed0522fcf31a9dbbd1af2580f7695d27868b5..b09c86b6996a8c0c28b44bcbbf40ff4f54c68bec 100644 (file)
@@ -1296,11 +1296,15 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
 {
        struct mgmt_mode *cp = data;
        struct pending_cmd *cmd;
-       u8 val;
+       u8 val, status;
        int err;
 
        BT_DBG("request for %s", hdev->name);
 
+       status = mgmt_bredr_support(hdev);
+       if (status)
+               return cmd_status(sk, hdev->id, MGMT_OP_SET_SSP, status);
+
        if (!lmp_ssp_capable(hdev))
                return cmd_status(sk, hdev->id, MGMT_OP_SET_SSP,
                                  MGMT_STATUS_NOT_SUPPORTED);