diff options
Diffstat (limited to 'net/bluetooth/smp.c')
-rw-r--r-- | net/bluetooth/smp.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index a36f8707d964..ba55bd4b5dda 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c | |||
@@ -434,6 +434,9 @@ int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level) | |||
434 | 434 | ||
435 | BT_DBG("conn %p hcon %p level 0x%2.2x", conn, hcon, sec_level); | 435 | BT_DBG("conn %p hcon %p level 0x%2.2x", conn, hcon, sec_level); |
436 | 436 | ||
437 | if (!lmp_host_le_capable(hcon->hdev)) | ||
438 | return 1; | ||
439 | |||
437 | if (IS_ERR(hcon->hdev->tfm)) | 440 | if (IS_ERR(hcon->hdev->tfm)) |
438 | return 1; | 441 | return 1; |
439 | 442 | ||
@@ -477,6 +480,12 @@ int smp_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb) | |||
477 | __u8 reason; | 480 | __u8 reason; |
478 | int err = 0; | 481 | int err = 0; |
479 | 482 | ||
483 | if (!lmp_host_le_capable(conn->hcon->hdev)) { | ||
484 | err = -ENOTSUPP; | ||
485 | reason = SMP_PAIRING_NOTSUPP; | ||
486 | goto done; | ||
487 | } | ||
488 | |||
480 | if (IS_ERR(conn->hcon->hdev->tfm)) { | 489 | if (IS_ERR(conn->hcon->hdev->tfm)) { |
481 | err = PTR_ERR(conn->hcon->hdev->tfm); | 490 | err = PTR_ERR(conn->hcon->hdev->tfm); |
482 | reason = SMP_PAIRING_NOTSUPP; | 491 | reason = SMP_PAIRING_NOTSUPP; |