(auth & SMP_AUTH_BONDING))
                return SMP_PAIRING_NOTSUPP;
 
+       if (test_bit(HCI_SC_ONLY, &hdev->dev_flags) && !(auth & SMP_AUTH_SC))
+               return SMP_AUTH_REQUIREMENTS;
+
        smp->preq[0] = SMP_CMD_PAIRING_REQ;
        memcpy(&smp->preq[1], req, sizeof(*req));
        skb_pull(skb, sizeof(*req));
 
        auth = rsp->auth_req & AUTH_REQ_MASK(hdev);
 
+       if (test_bit(HCI_SC_ONLY, &hdev->dev_flags) && !(auth & SMP_AUTH_SC))
+               return SMP_AUTH_REQUIREMENTS;
+
        smp->prsp[0] = SMP_CMD_PAIRING_RSP;
        memcpy(&smp->prsp[1], rsp, sizeof(*rsp));
 
 
        auth = rp->auth_req & AUTH_REQ_MASK(hdev);
 
+       if (test_bit(HCI_SC_ONLY, &hdev->dev_flags) && !(auth & SMP_AUTH_SC))
+               return SMP_AUTH_REQUIREMENTS;
+
        if (hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
                sec_level = BT_SECURITY_MEDIUM;
        else