From 094c14be8171faf65ba86f1a69690f22f5e79df3 Mon Sep 17 00:00:00 2001 From: Vinicius Costa Gomes Date: Wed, 1 Feb 2012 18:27:56 -0300 Subject: [PATCH] --- yaml --- r: 290908 b: refs/heads/master c: f1c09c07cd1a6c1676c4df6450d2b28875e184c1 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/bluetooth/smp.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index d68466ebdb8b..ad50ad5c6d15 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 66f01296962dfebf032c18ffe61c53a199b4a7bd +refs/heads/master: f1c09c07cd1a6c1676c4df6450d2b28875e184c1 diff --git a/trunk/net/bluetooth/smp.c b/trunk/net/bluetooth/smp.c index 581833436afa..9ff56e18d99b 100644 --- a/trunk/net/bluetooth/smp.c +++ b/trunk/net/bluetooth/smp.c @@ -263,8 +263,11 @@ static void smp_failure(struct l2cap_conn *conn, u8 reason, u8 send) clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->hcon->flags); mgmt_auth_failed(conn->hcon->hdev, conn->dst, reason); - cancel_delayed_work_sync(&conn->security_timer); - smp_chan_destroy(conn); + + if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags)) { + cancel_delayed_work_sync(&conn->security_timer); + smp_chan_destroy(conn); + } } #define JUST_WORKS 0x00 @@ -506,7 +509,7 @@ void smp_chan_destroy(struct l2cap_conn *conn) { struct smp_chan *smp = conn->smp_chan; - clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags); + BUG_ON(!smp); if (smp->tfm) crypto_free_blkcipher(smp->tfm);