aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/bluetooth/smp.c5
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