diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/bluetooth/smp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index ed1c9547ba6e..2a7ee7f6cd8b 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c | |||
@@ -407,13 +407,14 @@ static int tk_request(struct l2cap_conn *conn, u8 remote_oob, u8 auth, | |||
407 | method = REQ_PASSKEY; | 407 | method = REQ_PASSKEY; |
408 | } | 408 | } |
409 | 409 | ||
410 | /* Generate random passkey. Not valid until confirmed. */ | 410 | /* Generate random passkey. */ |
411 | if (method == CFM_PASSKEY) { | 411 | if (method == CFM_PASSKEY) { |
412 | memset(smp->tk, 0, sizeof(smp->tk)); | 412 | memset(smp->tk, 0, sizeof(smp->tk)); |
413 | get_random_bytes(&passkey, sizeof(passkey)); | 413 | get_random_bytes(&passkey, sizeof(passkey)); |
414 | passkey %= 1000000; | 414 | passkey %= 1000000; |
415 | put_unaligned_le32(passkey, smp->tk); | 415 | put_unaligned_le32(passkey, smp->tk); |
416 | BT_DBG("PassKey: %d", passkey); | 416 | BT_DBG("PassKey: %d", passkey); |
417 | set_bit(SMP_FLAG_TK_VALID, &smp->smp_flags); | ||
417 | } | 418 | } |
418 | 419 | ||
419 | hci_dev_lock(hcon->hdev); | 420 | hci_dev_lock(hcon->hdev); |
@@ -422,7 +423,7 @@ static int tk_request(struct l2cap_conn *conn, u8 remote_oob, u8 auth, | |||
422 | ret = mgmt_user_passkey_request(hcon->hdev, &hcon->dst, | 423 | ret = mgmt_user_passkey_request(hcon->hdev, &hcon->dst, |
423 | hcon->type, hcon->dst_type); | 424 | hcon->type, hcon->dst_type); |
424 | else | 425 | else |
425 | ret = mgmt_user_confirm_request(hcon->hdev, &hcon->dst, | 426 | ret = mgmt_user_passkey_notify(hcon->hdev, &hcon->dst, |
426 | hcon->type, hcon->dst_type, | 427 | hcon->type, hcon->dst_type, |
427 | cpu_to_le32(passkey), 0); | 428 | cpu_to_le32(passkey), 0); |
428 | 429 | ||