All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brian Gix <bgix@codeaurora.org>
To: linux-bluetooth@vger.kernel.org
Cc: Brian Gix <bgix@codeaurora.org>
Subject: [PATCH 7/9] Bluetooth: Centralize SMP pairing failure handling
Date: Tue, 15 Nov 2011 16:32:51 -0800	[thread overview]
Message-ID: <1321403573-7143-8-git-send-email-bgix@codeaurora.org> (raw)
In-Reply-To: <1321403573-7143-1-git-send-email-bgix@codeaurora.org>

Signed-off-by: Brian Gix <bgix@codeaurora.org>
---
 net/bluetooth/smp.c |   22 ++++++++++++++++------
 1 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 3b3726a..af8dde4 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -232,6 +232,18 @@ static u8 check_enc_key_size(struct l2cap_conn *conn, __u8 max_key_size)
 	return 0;
 }
 
+static void smp_failure(struct l2cap_conn *conn, u8 reason, u8 send)
+{
+	if (send)
+		smp_send_cmd(conn, SMP_CMD_PAIRING_FAIL, sizeof(reason),
+								&reason);
+
+	clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->hcon->pend);
+	mgmt_auth_failed(conn->hcon->hdev, conn->dst, reason);
+	del_timer(&conn->security_timer);
+	smp_chan_destroy(conn);
+}
+
 static void confirm_work(struct work_struct *work)
 {
 	struct smp_chan *smp = container_of(work, struct smp_chan, confirm);
@@ -270,8 +282,7 @@ static void confirm_work(struct work_struct *work)
 	return;
 
 error:
-	smp_send_cmd(conn, SMP_CMD_PAIRING_FAIL, sizeof(reason), &reason);
-	smp_chan_destroy(conn);
+	smp_failure(conn, reason, 1);
 }
 
 static void random_work(struct work_struct *work)
@@ -354,8 +365,7 @@ static void random_work(struct work_struct *work)
 	return;
 
 error:
-	smp_send_cmd(conn, SMP_CMD_PAIRING_FAIL, sizeof(reason), &reason);
-	smp_chan_destroy(conn);
+	smp_failure(conn, reason, 1);
 }
 
 static struct smp_chan *smp_chan_create(struct l2cap_conn *conn)
@@ -653,6 +663,7 @@ int smp_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb)
 		break;
 
 	case SMP_CMD_PAIRING_FAIL:
+		smp_failure(conn, skb->data[0], 0);
 		reason = 0;
 		err = -EPERM;
 		break;
@@ -698,8 +709,7 @@ int smp_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb)
 
 done:
 	if (reason)
-		smp_send_cmd(conn, SMP_CMD_PAIRING_FAIL, sizeof(reason),
-								&reason);
+		smp_failure(conn, reason, 1);
 
 	kfree_skb(skb);
 	return err;
-- 
1.7.7.2

-- 
Brian Gix
bgix@codeaurora.org
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum 

  parent reply	other threads:[~2011-11-16  0:32 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-16  0:32 [PATCH 0/9] Bluetooth: Add MITM protection to LE-SMP Brian Gix
2011-11-16  0:32 ` [PATCH 1/9] Bluetooth: Add HCI defines for User Passkey entry Brian Gix
2011-11-16  0:32 ` [PATCH 2/9] Bluetooth: Add MGMT opcodes for Passkey Entry Brian Gix
2011-11-16  0:32 ` [PATCH 3/9] Bluetooth: User Pairing Response restructuring Brian Gix
2011-11-16  0:32 ` [PATCH 4/9] Bluetooth: Add User Passkey Response handling Brian Gix
2011-11-16  0:32 ` [PATCH 5/9] Bluetooth: Add HCI User Passkey Req Evt handling Brian Gix
2011-11-16  0:32 ` [PATCH 6/9] Bluetooth: Cleanup blkcipher on SMP termination Brian Gix
2011-11-16  0:32 ` Brian Gix [this message]
2011-11-16  0:32 ` [PATCH 8/9] Bluetooth: Add MITM mechanism to LE-SMP Brian Gix
2011-11-16  0:32 ` [PATCH 9/9] Bluetooth: Add SMP to User Passkey and Confirm Brian Gix
  -- strict thread matches above, loose matches on Subject: below --
2011-11-13  6:01 [PATCH 0/9] Bluetooth: Add MITM protection to LE-SMP Brian Gix
2011-11-13  6:01 ` [PATCH 7/9] Bluetooth: Centralize SMP pairing failure handling Brian Gix

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1321403573-7143-8-git-send-email-bgix@codeaurora.org \
    --to=bgix@codeaurora.org \
    --cc=linux-bluetooth@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.