Bluetooth: Fix check for SSP when enabling SC
authorJohan Hedberg <johan.hedberg@intel.com>
Wed, 28 Jan 2015 17:56:00 +0000 (19:56 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 28 Jan 2015 20:26:22 +0000 (21:26 +0100)
There's a check in set_secure_conn() that's supposed to ensure that SSP
is enabled before we try to request the controller to enable SC (since
SSP is a pre-requisite for it). However, this check only makes sense for
controllers actually supporting BR/EDR SC. If we have a 4.0 controller
we're only interested in the LE part of SC and should therefore not be
requiring SSP to be enabled. This patch adds an additional condition to
check for lmp_sc_capable(hdev) before requiring SSP to be enabled.

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

index 8417ab387d1a0f99a84a29c4fbe47e13d3d93062..78939e0ed1f4517a5d6836721cd42c7c69e34ac0 100644 (file)
@@ -4818,6 +4818,7 @@ static int set_secure_conn(struct sock *sk, struct hci_dev *hdev,
                                  MGMT_STATUS_NOT_SUPPORTED);
 
        if (test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags) &&
+           lmp_sc_capable(hdev) &&
            !test_bit(HCI_SSP_ENABLED, &hdev->dev_flags))
                return cmd_status(sk, hdev->id, MGMT_OP_SET_SECURE_CONN,
                                  MGMT_STATUS_REJECTED);