All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/2] Bluetooth: SMP: Fail if remote and local public keys are identical
@ 2021-03-10 22:13 Luiz Augusto von Dentz
  2021-03-10 22:13 ` [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg Luiz Augusto von Dentz
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2021-03-10 22:13 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This fails the pairing procedure when both remote and local non-debug
public keys are identical.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
v2: Use crypto_memneq instead of memcmp and add a patch converting the use of
BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg.

 net/bluetooth/smp.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index b0c1ee110eff..e03cc284161c 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -2732,6 +2732,15 @@ static int smp_cmd_public_key(struct l2cap_conn *conn, struct sk_buff *skb)
 	if (skb->len < sizeof(*key))
 		return SMP_INVALID_PARAMS;
 
+	/* Check if remote and local public keys are the same and debug key is
+	 * not in use.
+	 */
+	if (!test_bit(SMP_FLAG_DEBUG_KEY, &smp->flags) &&
+	    !crypto_memneq(key, smp->local_pk, 64)) {
+		bt_dev_err(hdev, "Remote and local public keys are identical");
+		return SMP_UNSPECIFIED;
+	}
+
 	memcpy(smp->remote_pk, key, 64);
 
 	if (test_bit(SMP_FLAG_REMOTE_OOB, &smp->flags)) {
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg
  2021-03-10 22:13 [PATCH v2 1/2] Bluetooth: SMP: Fail if remote and local public keys are identical Luiz Augusto von Dentz
@ 2021-03-10 22:13 ` Luiz Augusto von Dentz
  2021-03-10 23:55     ` kernel test robot
  2021-03-11 10:48   ` Marcel Holtmann
  2021-03-10 23:19 ` [v2,1/2] Bluetooth: SMP: Fail if remote and local public keys are identical bluez.test.bot
  2021-03-11 10:46 ` [PATCH v2 1/2] " Marcel Holtmann
  2 siblings, 2 replies; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2021-03-10 22:13 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This converts instances of BT_ERR and BT_DBG to bt_dev_err and
bt_dev_dbg which can be enabled at runtime when BT_FEATURE_DEBUG is
enabled.

Note: Not all instances could be converted as some are exercised by
selftest.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
 net/bluetooth/smp.c | 114 +++++++++++++++++++++++---------------------
 1 file changed, 60 insertions(+), 54 deletions(-)

diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index e03cc284161c..5d7e583f7d72 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -595,7 +595,7 @@ static void smp_send_cmd(struct l2cap_conn *conn, u8 code, u16 len, void *data)
 	if (!chan)
 		return;
 
-	BT_DBG("code 0x%2.2x", code);
+	bt_dev_dbg(conn->hcon->hdev, "code 0x%2.2x", code);
 
 	iv[0].iov_base = &code;
 	iv[0].iov_len = 1;
@@ -859,7 +859,8 @@ static int tk_request(struct l2cap_conn *conn, u8 remote_oob, u8 auth,
 	memset(smp->tk, 0, sizeof(smp->tk));
 	clear_bit(SMP_FLAG_TK_VALID, &smp->flags);
 
-	BT_DBG("tk_request: auth:%d lcl:%d rem:%d", auth, local_io, remote_io);
+	bt_dev_dbg(hcon->hdev, "tk_request: auth:%d lcl:%d rem:%d", auth,
+		   local_io, remote_io);
 
 	/* If neither side wants MITM, either "just" confirm an incoming
 	 * request or use just-works for outgoing ones. The JUST_CFM
@@ -924,7 +925,7 @@ static int tk_request(struct l2cap_conn *conn, u8 remote_oob, u8 auth,
 		get_random_bytes(&passkey, sizeof(passkey));
 		passkey %= 1000000;
 		put_unaligned_le32(passkey, smp->tk);
-		BT_DBG("PassKey: %d", passkey);
+		bt_dev_dbg(hcon->hdev, "PassKey: %d", passkey);
 		set_bit(SMP_FLAG_TK_VALID, &smp->flags);
 	}
 
@@ -949,7 +950,7 @@ static u8 smp_confirm(struct smp_chan *smp)
 	struct smp_cmd_pairing_confirm cp;
 	int ret;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
 
 	ret = smp_c1(smp->tk, smp->prnd, smp->preq, smp->prsp,
 		     conn->hcon->init_addr_type, &conn->hcon->init_addr,
@@ -977,7 +978,8 @@ static u8 smp_random(struct smp_chan *smp)
 	u8 confirm[16];
 	int ret;
 
-	BT_DBG("conn %p %s", conn, conn->hcon->out ? "master" : "slave");
+	bt_dev_dbg(conn->hcon->hdev, "conn %p %s", conn,
+		   conn->hcon->out ? "master" : "slave");
 
 	ret = smp_c1(smp->tk, smp->rrnd, smp->preq, smp->prsp,
 		     hcon->init_addr_type, &hcon->init_addr,
@@ -1236,7 +1238,7 @@ static void smp_distribute_keys(struct smp_chan *smp)
 	struct hci_dev *hdev = hcon->hdev;
 	__u8 *keydist;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(hdev, "conn %p", conn);
 
 	rsp = (void *) &smp->prsp[1];
 
@@ -1266,7 +1268,7 @@ static void smp_distribute_keys(struct smp_chan *smp)
 		*keydist &= ~SMP_SC_NO_DIST;
 	}
 
-	BT_DBG("keydist 0x%x", *keydist);
+	bt_dev_dbg(hdev, "keydist 0x%x", *keydist);
 
 	if (*keydist & SMP_DIST_ENC_KEY) {
 		struct smp_cmd_encrypt_info enc;
@@ -1366,13 +1368,14 @@ static void smp_timeout(struct work_struct *work)
 					    security_timer.work);
 	struct l2cap_conn *conn = smp->conn;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
 
 	hci_disconnect(conn->hcon, HCI_ERROR_REMOTE_USER_TERM);
 }
 
 static struct smp_chan *smp_chan_create(struct l2cap_conn *conn)
 {
+	struct hci_conn *hcon = conn->hcon;
 	struct l2cap_chan *chan = conn->smp;
 	struct smp_chan *smp;
 
@@ -1382,13 +1385,13 @@ static struct smp_chan *smp_chan_create(struct l2cap_conn *conn)
 
 	smp->tfm_cmac = crypto_alloc_shash("cmac(aes)", 0, 0);
 	if (IS_ERR(smp->tfm_cmac)) {
-		BT_ERR("Unable to create CMAC crypto context");
+		bt_dev_err(hcon->hdev, "Unable to create CMAC crypto context");
 		goto zfree_smp;
 	}
 
 	smp->tfm_ecdh = crypto_alloc_kpp("ecdh", 0, 0);
 	if (IS_ERR(smp->tfm_ecdh)) {
-		BT_ERR("Unable to create ECDH crypto context");
+		bt_dev_err(hcon->hdev, "Unable to create ECDH crypto context");
 		goto free_shash;
 	}
 
@@ -1399,7 +1402,7 @@ static struct smp_chan *smp_chan_create(struct l2cap_conn *conn)
 
 	INIT_DELAYED_WORK(&smp->security_timer, smp_timeout);
 
-	hci_conn_hold(conn->hcon);
+	hci_conn_hold(hcon);
 
 	return smp;
 
@@ -1564,7 +1567,7 @@ static u8 sc_passkey_round(struct smp_chan *smp, u8 smp_op)
 		if (!hcon->out)
 			return 0;
 
-		BT_DBG("%s Starting passkey round %u", hdev->name,
+		bt_dev_dbg(hdev, "%s Starting passkey round %u", hdev->name,
 		       smp->passkey_round + 1);
 
 		SMP_ALLOW_CMD(smp, SMP_CMD_PAIRING_CONFIRM);
@@ -1625,7 +1628,7 @@ int smp_user_confirm_reply(struct hci_conn *hcon, u16 mgmt_op, __le32 passkey)
 	u32 value;
 	int err;
 
-	BT_DBG("");
+	bt_dev_dbg(conn->hcon->hdev, "");
 
 	if (!conn)
 		return -ENOTCONN;
@@ -1651,7 +1654,7 @@ int smp_user_confirm_reply(struct hci_conn *hcon, u16 mgmt_op, __le32 passkey)
 	case MGMT_OP_USER_PASSKEY_REPLY:
 		value = le32_to_cpu(passkey);
 		memset(smp->tk, 0, sizeof(smp->tk));
-		BT_DBG("PassKey: %d", value);
+		bt_dev_dbg(conn->hcon->hdev, "PassKey: %d", value);
 		put_unaligned_le32(value, smp->tk);
 		fallthrough;
 	case MGMT_OP_USER_CONFIRM_REPLY:
@@ -1733,7 +1736,7 @@ static u8 smp_cmd_pairing_req(struct l2cap_conn *conn, struct sk_buff *skb)
 	u8 key_size, auth, sec_level;
 	int ret;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(hdev, "conn %p", conn);
 
 	if (skb->len < sizeof(*req))
 		return SMP_INVALID_PARAMS;
@@ -1887,7 +1890,7 @@ static u8 sc_send_public_key(struct smp_chan *smp)
 	}
 
 	if (hci_dev_test_flag(hdev, HCI_USE_DEBUG_KEYS)) {
-		BT_DBG("Using debug keys");
+		bt_dev_dbg(hdev, "Using debug keys");
 		if (set_ecdh_privkey(smp->tfm_ecdh, debug_sk))
 			return SMP_UNSPECIFIED;
 		memcpy(smp->local_pk, debug_pk, 64);
@@ -1924,7 +1927,7 @@ static u8 smp_cmd_pairing_rsp(struct l2cap_conn *conn, struct sk_buff *skb)
 	u8 key_size, auth;
 	int ret;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(hdev, "conn %p", conn);
 
 	if (skb->len < sizeof(*rsp))
 		return SMP_INVALID_PARAMS;
@@ -2019,7 +2022,7 @@ static u8 sc_check_confirm(struct smp_chan *smp)
 {
 	struct l2cap_conn *conn = smp->conn;
 
-	BT_DBG("");
+	bt_dev_dbg(conn->hcon->hdev, "");
 
 	if (smp->method == REQ_PASSKEY || smp->method == DSP_PASSKEY)
 		return sc_passkey_round(smp, SMP_CMD_PAIRING_CONFIRM);
@@ -2078,8 +2081,10 @@ static u8 smp_cmd_pairing_confirm(struct l2cap_conn *conn, struct sk_buff *skb)
 {
 	struct l2cap_chan *chan = conn->smp;
 	struct smp_chan *smp = chan->data;
+	struct hci_conn *hcon = conn->hcon;
+	struct hci_dev *hdev = hcon->hdev;
 
-	BT_DBG("conn %p %s", conn, conn->hcon->out ? "master" : "slave");
+	bt_dev_dbg(hdev, "conn %p %s", conn, hcon->out ? "master" : "slave");
 
 	if (skb->len < sizeof(smp->pcnf))
 		return SMP_INVALID_PARAMS;
@@ -2094,7 +2099,7 @@ static u8 smp_cmd_pairing_confirm(struct l2cap_conn *conn, struct sk_buff *skb)
 		if (test_bit(SMP_FLAG_REMOTE_PK, &smp->flags))
 			return sc_check_confirm(smp);
 
-		BT_ERR("Unexpected SMP Pairing Confirm");
+		bt_dev_err(hdev, "Unexpected SMP Pairing Confirm");
 
 		ret = fixup_sc_false_positive(smp);
 		if (ret)
@@ -2125,7 +2130,7 @@ static u8 smp_cmd_pairing_random(struct l2cap_conn *conn, struct sk_buff *skb)
 	u32 passkey;
 	int err;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(hcon->hdev, "conn %p", conn);
 
 	if (skb->len < sizeof(smp->rrnd))
 		return SMP_INVALID_PARAMS;
@@ -2284,7 +2289,7 @@ static u8 smp_cmd_security_req(struct l2cap_conn *conn, struct sk_buff *skb)
 	struct smp_chan *smp;
 	u8 sec_level, auth;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(hdev, "conn %p", conn);
 
 	if (skb->len < sizeof(*rp))
 		return SMP_INVALID_PARAMS;
@@ -2347,7 +2352,8 @@ int smp_conn_security(struct hci_conn *hcon, __u8 sec_level)
 	__u8 authreq;
 	int ret;
 
-	BT_DBG("conn %p hcon %p level 0x%2.2x", conn, hcon, sec_level);
+	bt_dev_dbg(hcon->hdev, "conn %p hcon %p level 0x%2.2x", conn, hcon,
+		   sec_level);
 
 	/* This may be NULL if there's an unexpected disconnection */
 	if (!conn)
@@ -2483,7 +2489,7 @@ static int smp_cmd_encrypt_info(struct l2cap_conn *conn, struct sk_buff *skb)
 	struct l2cap_chan *chan = conn->smp;
 	struct smp_chan *smp = chan->data;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
 
 	if (skb->len < sizeof(*rp))
 		return SMP_INVALID_PARAMS;
@@ -2516,7 +2522,7 @@ static int smp_cmd_master_ident(struct l2cap_conn *conn, struct sk_buff *skb)
 	struct smp_ltk *ltk;
 	u8 authenticated;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(hdev, "conn %p", conn);
 
 	if (skb->len < sizeof(*rp))
 		return SMP_INVALID_PARAMS;
@@ -2548,7 +2554,7 @@ static int smp_cmd_ident_info(struct l2cap_conn *conn, struct sk_buff *skb)
 	struct l2cap_chan *chan = conn->smp;
 	struct smp_chan *smp = chan->data;
 
-	BT_DBG("");
+	bt_dev_dbg(conn->hcon->hdev, "");
 
 	if (skb->len < sizeof(*info))
 		return SMP_INVALID_PARAMS;
@@ -2580,7 +2586,7 @@ static int smp_cmd_ident_addr_info(struct l2cap_conn *conn,
 	struct hci_conn *hcon = conn->hcon;
 	bdaddr_t rpa;
 
-	BT_DBG("");
+	bt_dev_dbg(hcon->hdev, "");
 
 	if (skb->len < sizeof(*info))
 		return SMP_INVALID_PARAMS;
@@ -2647,7 +2653,7 @@ static int smp_cmd_sign_info(struct l2cap_conn *conn, struct sk_buff *skb)
 	struct smp_chan *smp = chan->data;
 	struct smp_csrk *csrk;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(conn->hcon->hdev, "conn %p", conn);
 
 	if (skb->len < sizeof(*rp))
 		return SMP_INVALID_PARAMS;
@@ -2727,7 +2733,7 @@ static int smp_cmd_public_key(struct l2cap_conn *conn, struct sk_buff *skb)
 	struct smp_cmd_pairing_confirm cfm;
 	int err;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(hdev, "conn %p", conn);
 
 	if (skb->len < sizeof(*key))
 		return SMP_INVALID_PARAMS;
@@ -2791,7 +2797,7 @@ static int smp_cmd_public_key(struct l2cap_conn *conn, struct sk_buff *skb)
 
 	smp->method = sc_select_method(smp);
 
-	BT_DBG("%s selected method 0x%02x", hdev->name, smp->method);
+	bt_dev_dbg(hdev, "%s selected method 0x%02x", hdev->name, smp->method);
 
 	/* JUST_WORKS and JUST_CFM result in an unauthenticated key */
 	if (smp->method == JUST_WORKS || smp->method == JUST_CFM)
@@ -2866,7 +2872,7 @@ static int smp_cmd_dhkey_check(struct l2cap_conn *conn, struct sk_buff *skb)
 	u8 io_cap[3], r[16], e[16];
 	int err;
 
-	BT_DBG("conn %p", conn);
+	bt_dev_dbg(hcon->hdev, "conn %p", conn);
 
 	if (skb->len < sizeof(*check))
 		return SMP_INVALID_PARAMS;
@@ -2926,7 +2932,7 @@ static int smp_cmd_keypress_notify(struct l2cap_conn *conn,
 {
 	struct smp_cmd_keypress_notify *kp = (void *) skb->data;
 
-	BT_DBG("value 0x%02x", kp->value);
+	bt_dev_dbg(conn->hcon->hdev, "value 0x%02x", kp->value);
 
 	return 0;
 }
@@ -3023,7 +3029,7 @@ static int smp_sig_channel(struct l2cap_chan *chan, struct sk_buff *skb)
 		break;
 
 	default:
-		BT_DBG("Unknown command code 0x%2.2x", code);
+		bt_dev_dbg(hcon->hdev, "Unknown command code 0x%2.2x", code);
 		reason = SMP_CMD_NOTSUPP;
 		goto done;
 	}
@@ -3048,7 +3054,7 @@ static void smp_teardown_cb(struct l2cap_chan *chan, int err)
 {
 	struct l2cap_conn *conn = chan->conn;
 
-	BT_DBG("chan %p", chan);
+	bt_dev_dbg(conn->hcon->hdev, "chan %p", chan);
 
 	if (chan->data)
 		smp_chan_destroy(conn);
@@ -3065,7 +3071,7 @@ static void bredr_pairing(struct l2cap_chan *chan)
 	struct smp_cmd_pairing req;
 	struct smp_chan *smp;
 
-	BT_DBG("chan %p", chan);
+	bt_dev_dbg(hdev, "chan %p", chan);
 
 	/* Only new pairings are interesting */
 	if (!test_bit(HCI_CONN_NEW_LINK_KEY, &hcon->flags))
@@ -3112,7 +3118,7 @@ static void bredr_pairing(struct l2cap_chan *chan)
 
 	set_bit(SMP_FLAG_SC, &smp->flags);
 
-	BT_DBG("%s starting SMP over BR/EDR", hdev->name);
+	bt_dev_dbg(hdev, "%s starting SMP over BR/EDR", hdev->name);
 
 	/* Prepare and send the BR/EDR SMP Pairing Request */
 	build_bredr_pairing_cmd(smp, &req, NULL);
@@ -3130,7 +3136,7 @@ static void smp_resume_cb(struct l2cap_chan *chan)
 	struct l2cap_conn *conn = chan->conn;
 	struct hci_conn *hcon = conn->hcon;
 
-	BT_DBG("chan %p", chan);
+	bt_dev_dbg(hcon->hdev, "chan %p", chan);
 
 	if (hcon->type == ACL_LINK) {
 		bredr_pairing(chan);
@@ -3153,7 +3159,7 @@ static void smp_ready_cb(struct l2cap_chan *chan)
 	struct l2cap_conn *conn = chan->conn;
 	struct hci_conn *hcon = conn->hcon;
 
-	BT_DBG("chan %p", chan);
+	bt_dev_dbg(hcon->hdev, "chan %p", chan);
 
 	/* No need to call l2cap_chan_hold() here since we already own
 	 * the reference taken in smp_new_conn_cb(). This is just the
@@ -3171,7 +3177,7 @@ static int smp_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
 {
 	int err;
 
-	BT_DBG("chan %p", chan);
+	bt_dev_dbg(chan->conn->hcon->hdev, "chan %p", chan);
 
 	err = smp_sig_channel(chan, skb);
 	if (err) {
@@ -3223,7 +3229,7 @@ static inline struct l2cap_chan *smp_new_conn_cb(struct l2cap_chan *pchan)
 {
 	struct l2cap_chan *chan;
 
-	BT_DBG("pchan %p", pchan);
+	bt_dev_dbg(pchan->conn->hcon->hdev, "pchan %p", pchan);
 
 	chan = l2cap_chan_create();
 	if (!chan)
@@ -3244,7 +3250,7 @@ static inline struct l2cap_chan *smp_new_conn_cb(struct l2cap_chan *pchan)
 	 */
 	atomic_set(&chan->nesting, L2CAP_NESTING_SMP);
 
-	BT_DBG("created chan %p", chan);
+	bt_dev_dbg(pchan->conn->hcon->hdev, "created chan %p", chan);
 
 	return chan;
 }
@@ -3285,14 +3291,14 @@ static struct l2cap_chan *smp_add_cid(struct hci_dev *hdev, u16 cid)
 
 	tfm_cmac = crypto_alloc_shash("cmac(aes)", 0, 0);
 	if (IS_ERR(tfm_cmac)) {
-		BT_ERR("Unable to create CMAC crypto context");
+		bt_dev_err(hdev, "Unable to create CMAC crypto context");
 		kfree_sensitive(smp);
 		return ERR_CAST(tfm_cmac);
 	}
 
 	tfm_ecdh = crypto_alloc_kpp("ecdh", 0, 0);
 	if (IS_ERR(tfm_ecdh)) {
-		BT_ERR("Unable to create ECDH crypto context");
+		bt_dev_err(hdev, "Unable to create ECDH crypto context");
 		crypto_free_shash(tfm_cmac);
 		kfree_sensitive(smp);
 		return ERR_CAST(tfm_ecdh);
@@ -3348,7 +3354,7 @@ static void smp_del_chan(struct l2cap_chan *chan)
 {
 	struct smp_dev *smp;
 
-	BT_DBG("chan %p", chan);
+	bt_dev_dbg(chan->conn->hcon->hdev, "chan %p", chan);
 
 	smp = chan->data;
 	if (smp) {
@@ -3391,7 +3397,7 @@ int smp_register(struct hci_dev *hdev)
 {
 	struct l2cap_chan *chan;
 
-	BT_DBG("%s", hdev->name);
+	bt_dev_dbg(hdev, "%s", hdev->name);
 
 	/* If the controller does not support Low Energy operation, then
 	 * there is also no need to register any SMP channel.
@@ -3732,55 +3738,55 @@ static int __init run_selftests(struct crypto_shash *tfm_cmac,
 
 	err = test_debug_key(tfm_ecdh);
 	if (err) {
-		BT_ERR("debug_key test failed");
+		bt_dev_err(hdev, "debug_key test failed");
 		goto done;
 	}
 
 	err = test_ah();
 	if (err) {
-		BT_ERR("smp_ah test failed");
+		bt_dev_err(hdev, "smp_ah test failed");
 		goto done;
 	}
 
 	err = test_c1();
 	if (err) {
-		BT_ERR("smp_c1 test failed");
+		bt_dev_err(hdev, "smp_c1 test failed");
 		goto done;
 	}
 
 	err = test_s1();
 	if (err) {
-		BT_ERR("smp_s1 test failed");
+		bt_dev_err(hdev, "smp_s1 test failed");
 		goto done;
 	}
 
 	err = test_f4(tfm_cmac);
 	if (err) {
-		BT_ERR("smp_f4 test failed");
+		bt_dev_err(hdev, "smp_f4 test failed");
 		goto done;
 	}
 
 	err = test_f5(tfm_cmac);
 	if (err) {
-		BT_ERR("smp_f5 test failed");
+		bt_dev_err(hdev, "smp_f5 test failed");
 		goto done;
 	}
 
 	err = test_f6(tfm_cmac);
 	if (err) {
-		BT_ERR("smp_f6 test failed");
+		bt_dev_err(hdev, "smp_f6 test failed");
 		goto done;
 	}
 
 	err = test_g2(tfm_cmac);
 	if (err) {
-		BT_ERR("smp_g2 test failed");
+		bt_dev_err(hdev, "smp_g2 test failed");
 		goto done;
 	}
 
 	err = test_h6(tfm_cmac);
 	if (err) {
-		BT_ERR("smp_h6 test failed");
+		bt_dev_err(hdev, "smp_h6 test failed");
 		goto done;
 	}
 
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* RE: [v2,1/2] Bluetooth: SMP: Fail if remote and local public keys are identical
  2021-03-10 22:13 [PATCH v2 1/2] Bluetooth: SMP: Fail if remote and local public keys are identical Luiz Augusto von Dentz
  2021-03-10 22:13 ` [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg Luiz Augusto von Dentz
@ 2021-03-10 23:19 ` bluez.test.bot
  2021-03-11 10:46 ` [PATCH v2 1/2] " Marcel Holtmann
  2 siblings, 0 replies; 8+ messages in thread
From: bluez.test.bot @ 2021-03-10 23:19 UTC (permalink / raw)
  To: linux-bluetooth, luiz.dentz

[-- Attachment #1: Type: text/plain, Size: 2464 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=445775

---Test result---

##############################
    Test: CheckPatch - FAIL
    Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg
WARNING: Prefer using '"%s...", __func__' to using 'tk_request', this function's name, in a string
#34: FILE: net/bluetooth/smp.c:862:
+	bt_dev_dbg(hcon->hdev, "tk_request: auth:%d lcl:%d rem:%d", auth,

CHECK: Alignment should match open parenthesis
#132: FILE: net/bluetooth/smp.c:1571:
+		bt_dev_dbg(hdev, "%s Starting passkey round %u", hdev->name,
 		       smp->passkey_round + 1);

total: 0 errors, 1 warnings, 1 checks, 436 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
      mechanically convert to the typical style using --fix or --fix-inplace.

"[PATCH] Bluetooth: SMP: Convert BT_ERR/BT_DBG to" has style problems, please review.

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.


    ##############################
    Test: CheckGitLint - PASS
    

    ##############################
    Test: CheckBuildK - PASS
    

    ##############################
    Test: CheckTestRunner: Setup - PASS
    

    ##############################
    Test: CheckTestRunner: l2cap-tester - PASS
    Total: 40, Passed: 34 (85.0%), Failed: 0, Not Run: 6

    ##############################
    Test: CheckTestRunner: bnep-tester - PASS
    Total: 1, Passed: 1 (100.0%), Failed: 0, Not Run: 0

    ##############################
    Test: CheckTestRunner: mgmt-tester - FAIL
    Total: 416, Passed: 399 (95.9%), Failed: 3, Not Run: 14

    ##############################
    Test: CheckTestRunner: rfcomm-tester - PASS
    Total: 9, Passed: 9 (100.0%), Failed: 0, Not Run: 0

    ##############################
    Test: CheckTestRunner: sco-tester - PASS
    Total: 8, Passed: 8 (100.0%), Failed: 0, Not Run: 0

    ##############################
    Test: CheckTestRunner: smp-tester - PASS
    Total: 8, Passed: 8 (100.0%), Failed: 0, Not Run: 0

    ##############################
    Test: CheckTestRunner: userchan-tester - PASS
    Total: 3, Passed: 3 (100.0%), Failed: 0, Not Run: 0

    

---
Regards,
Linux Bluetooth


[-- Attachment #2: l2cap-tester.log --]
[-- Type: application/octet-stream, Size: 43342 bytes --]

[-- Attachment #3: bnep-tester.log --]
[-- Type: application/octet-stream, Size: 3533 bytes --]

[-- Attachment #4: mgmt-tester.log --]
[-- Type: application/octet-stream, Size: 547124 bytes --]

[-- Attachment #5: rfcomm-tester.log --]
[-- Type: application/octet-stream, Size: 11653 bytes --]

[-- Attachment #6: sco-tester.log --]
[-- Type: application/octet-stream, Size: 9888 bytes --]

[-- Attachment #7: smp-tester.log --]
[-- Type: application/octet-stream, Size: 11799 bytes --]

[-- Attachment #8: userchan-tester.log --]
[-- Type: application/octet-stream, Size: 5429 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg
  2021-03-10 22:13 ` [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg Luiz Augusto von Dentz
@ 2021-03-10 23:55     ` kernel test robot
  2021-03-11 10:48   ` Marcel Holtmann
  1 sibling, 0 replies; 8+ messages in thread
From: kernel test robot @ 2021-03-10 23:55 UTC (permalink / raw)
  To: Luiz Augusto von Dentz, linux-bluetooth; +Cc: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 4995 bytes --]

Hi Luiz,

I love your patch! Yet something to improve:

[auto build test ERROR on bluetooth-next/master]
[also build test ERROR on v5.12-rc2 next-20210310]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Luiz-Augusto-von-Dentz/Bluetooth-SMP-Fail-if-remote-and-local-public-keys-are-identical/20210311-061654
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
config: arc-randconfig-r001-20210309 (attached as .config)
compiler: arceb-elf-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/1c91aff112229ea99f1b03e5f547ad6804d9cfb7
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Luiz-Augusto-von-Dentz/Bluetooth-SMP-Fail-if-remote-and-local-public-keys-are-identical/20210311-061654
        git checkout 1c91aff112229ea99f1b03e5f547ad6804d9cfb7
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from net/bluetooth/smp.c:31:
   net/bluetooth/smp.c: In function 'run_selftests':
>> net/bluetooth/smp.c:3741:14: error: 'hdev' undeclared (first use in this function); did you mean 'cdev'?
    3741 |   bt_dev_err(hdev, "debug_key test failed");
         |              ^~~~
   include/net/bluetooth/bluetooth.h:175:45: note: in definition of macro 'BT_ERR'
     175 | #define BT_ERR(fmt, ...) bt_err(fmt "\n", ##__VA_ARGS__)
         |                                             ^~~~~~~~~~~
   net/bluetooth/smp.c:3741:3: note: in expansion of macro 'bt_dev_err'
    3741 |   bt_dev_err(hdev, "debug_key test failed");
         |   ^~~~~~~~~~
   net/bluetooth/smp.c:3741:14: note: each undeclared identifier is reported only once for each function it appears in
    3741 |   bt_dev_err(hdev, "debug_key test failed");
         |              ^~~~
   include/net/bluetooth/bluetooth.h:175:45: note: in definition of macro 'BT_ERR'
     175 | #define BT_ERR(fmt, ...) bt_err(fmt "\n", ##__VA_ARGS__)
         |                                             ^~~~~~~~~~~
   net/bluetooth/smp.c:3741:3: note: in expansion of macro 'bt_dev_err'
    3741 |   bt_dev_err(hdev, "debug_key test failed");
         |   ^~~~~~~~~~


vim +3741 net/bluetooth/smp.c

  3729	
  3730	static int __init run_selftests(struct crypto_shash *tfm_cmac,
  3731					struct crypto_kpp *tfm_ecdh)
  3732	{
  3733		ktime_t calltime, delta, rettime;
  3734		unsigned long long duration;
  3735		int err;
  3736	
  3737		calltime = ktime_get();
  3738	
  3739		err = test_debug_key(tfm_ecdh);
  3740		if (err) {
> 3741			bt_dev_err(hdev, "debug_key test failed");
  3742			goto done;
  3743		}
  3744	
  3745		err = test_ah();
  3746		if (err) {
  3747			bt_dev_err(hdev, "smp_ah test failed");
  3748			goto done;
  3749		}
  3750	
  3751		err = test_c1();
  3752		if (err) {
  3753			bt_dev_err(hdev, "smp_c1 test failed");
  3754			goto done;
  3755		}
  3756	
  3757		err = test_s1();
  3758		if (err) {
  3759			bt_dev_err(hdev, "smp_s1 test failed");
  3760			goto done;
  3761		}
  3762	
  3763		err = test_f4(tfm_cmac);
  3764		if (err) {
  3765			bt_dev_err(hdev, "smp_f4 test failed");
  3766			goto done;
  3767		}
  3768	
  3769		err = test_f5(tfm_cmac);
  3770		if (err) {
  3771			bt_dev_err(hdev, "smp_f5 test failed");
  3772			goto done;
  3773		}
  3774	
  3775		err = test_f6(tfm_cmac);
  3776		if (err) {
  3777			bt_dev_err(hdev, "smp_f6 test failed");
  3778			goto done;
  3779		}
  3780	
  3781		err = test_g2(tfm_cmac);
  3782		if (err) {
  3783			bt_dev_err(hdev, "smp_g2 test failed");
  3784			goto done;
  3785		}
  3786	
  3787		err = test_h6(tfm_cmac);
  3788		if (err) {
  3789			bt_dev_err(hdev, "smp_h6 test failed");
  3790			goto done;
  3791		}
  3792	
  3793		rettime = ktime_get();
  3794		delta = ktime_sub(rettime, calltime);
  3795		duration = (unsigned long long) ktime_to_ns(delta) >> 10;
  3796	
  3797		BT_INFO("SMP test passed in %llu usecs", duration);
  3798	
  3799	done:
  3800		if (!err)
  3801			snprintf(test_smp_buffer, sizeof(test_smp_buffer),
  3802				 "PASS (%llu usecs)\n", duration);
  3803		else
  3804			snprintf(test_smp_buffer, sizeof(test_smp_buffer), "FAIL\n");
  3805	
  3806		debugfs_create_file("selftest_smp", 0444, bt_debugfs, NULL,
  3807				    &test_smp_fops);
  3808	
  3809		return err;
  3810	}
  3811	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 32888 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg
@ 2021-03-10 23:55     ` kernel test robot
  0 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2021-03-10 23:55 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 5137 bytes --]

Hi Luiz,

I love your patch! Yet something to improve:

[auto build test ERROR on bluetooth-next/master]
[also build test ERROR on v5.12-rc2 next-20210310]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Luiz-Augusto-von-Dentz/Bluetooth-SMP-Fail-if-remote-and-local-public-keys-are-identical/20210311-061654
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
config: arc-randconfig-r001-20210309 (attached as .config)
compiler: arceb-elf-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/1c91aff112229ea99f1b03e5f547ad6804d9cfb7
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Luiz-Augusto-von-Dentz/Bluetooth-SMP-Fail-if-remote-and-local-public-keys-are-identical/20210311-061654
        git checkout 1c91aff112229ea99f1b03e5f547ad6804d9cfb7
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from net/bluetooth/smp.c:31:
   net/bluetooth/smp.c: In function 'run_selftests':
>> net/bluetooth/smp.c:3741:14: error: 'hdev' undeclared (first use in this function); did you mean 'cdev'?
    3741 |   bt_dev_err(hdev, "debug_key test failed");
         |              ^~~~
   include/net/bluetooth/bluetooth.h:175:45: note: in definition of macro 'BT_ERR'
     175 | #define BT_ERR(fmt, ...) bt_err(fmt "\n", ##__VA_ARGS__)
         |                                             ^~~~~~~~~~~
   net/bluetooth/smp.c:3741:3: note: in expansion of macro 'bt_dev_err'
    3741 |   bt_dev_err(hdev, "debug_key test failed");
         |   ^~~~~~~~~~
   net/bluetooth/smp.c:3741:14: note: each undeclared identifier is reported only once for each function it appears in
    3741 |   bt_dev_err(hdev, "debug_key test failed");
         |              ^~~~
   include/net/bluetooth/bluetooth.h:175:45: note: in definition of macro 'BT_ERR'
     175 | #define BT_ERR(fmt, ...) bt_err(fmt "\n", ##__VA_ARGS__)
         |                                             ^~~~~~~~~~~
   net/bluetooth/smp.c:3741:3: note: in expansion of macro 'bt_dev_err'
    3741 |   bt_dev_err(hdev, "debug_key test failed");
         |   ^~~~~~~~~~


vim +3741 net/bluetooth/smp.c

  3729	
  3730	static int __init run_selftests(struct crypto_shash *tfm_cmac,
  3731					struct crypto_kpp *tfm_ecdh)
  3732	{
  3733		ktime_t calltime, delta, rettime;
  3734		unsigned long long duration;
  3735		int err;
  3736	
  3737		calltime = ktime_get();
  3738	
  3739		err = test_debug_key(tfm_ecdh);
  3740		if (err) {
> 3741			bt_dev_err(hdev, "debug_key test failed");
  3742			goto done;
  3743		}
  3744	
  3745		err = test_ah();
  3746		if (err) {
  3747			bt_dev_err(hdev, "smp_ah test failed");
  3748			goto done;
  3749		}
  3750	
  3751		err = test_c1();
  3752		if (err) {
  3753			bt_dev_err(hdev, "smp_c1 test failed");
  3754			goto done;
  3755		}
  3756	
  3757		err = test_s1();
  3758		if (err) {
  3759			bt_dev_err(hdev, "smp_s1 test failed");
  3760			goto done;
  3761		}
  3762	
  3763		err = test_f4(tfm_cmac);
  3764		if (err) {
  3765			bt_dev_err(hdev, "smp_f4 test failed");
  3766			goto done;
  3767		}
  3768	
  3769		err = test_f5(tfm_cmac);
  3770		if (err) {
  3771			bt_dev_err(hdev, "smp_f5 test failed");
  3772			goto done;
  3773		}
  3774	
  3775		err = test_f6(tfm_cmac);
  3776		if (err) {
  3777			bt_dev_err(hdev, "smp_f6 test failed");
  3778			goto done;
  3779		}
  3780	
  3781		err = test_g2(tfm_cmac);
  3782		if (err) {
  3783			bt_dev_err(hdev, "smp_g2 test failed");
  3784			goto done;
  3785		}
  3786	
  3787		err = test_h6(tfm_cmac);
  3788		if (err) {
  3789			bt_dev_err(hdev, "smp_h6 test failed");
  3790			goto done;
  3791		}
  3792	
  3793		rettime = ktime_get();
  3794		delta = ktime_sub(rettime, calltime);
  3795		duration = (unsigned long long) ktime_to_ns(delta) >> 10;
  3796	
  3797		BT_INFO("SMP test passed in %llu usecs", duration);
  3798	
  3799	done:
  3800		if (!err)
  3801			snprintf(test_smp_buffer, sizeof(test_smp_buffer),
  3802				 "PASS (%llu usecs)\n", duration);
  3803		else
  3804			snprintf(test_smp_buffer, sizeof(test_smp_buffer), "FAIL\n");
  3805	
  3806		debugfs_create_file("selftest_smp", 0444, bt_debugfs, NULL,
  3807				    &test_smp_fops);
  3808	
  3809		return err;
  3810	}
  3811	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32888 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/2] Bluetooth: SMP: Fail if remote and local public keys are identical
  2021-03-10 22:13 [PATCH v2 1/2] Bluetooth: SMP: Fail if remote and local public keys are identical Luiz Augusto von Dentz
  2021-03-10 22:13 ` [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg Luiz Augusto von Dentz
  2021-03-10 23:19 ` [v2,1/2] Bluetooth: SMP: Fail if remote and local public keys are identical bluez.test.bot
@ 2021-03-11 10:46 ` Marcel Holtmann
  2 siblings, 0 replies; 8+ messages in thread
From: Marcel Holtmann @ 2021-03-11 10:46 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

> This fails the pairing procedure when both remote and local non-debug
> public keys are identical.
> 
> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> ---
> v2: Use crypto_memneq instead of memcmp and add a patch converting the use of
> BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg.
> 
> net/bluetooth/smp.c | 9 +++++++++
> 1 file changed, 9 insertions(+)

patch has been applied to bluetooth-next tree.

Regards

Marcel


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg
  2021-03-10 22:13 ` [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg Luiz Augusto von Dentz
  2021-03-10 23:55     ` kernel test robot
@ 2021-03-11 10:48   ` Marcel Holtmann
  2021-03-11 21:16     ` Luiz Augusto von Dentz
  1 sibling, 1 reply; 8+ messages in thread
From: Marcel Holtmann @ 2021-03-11 10:48 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

> This converts instances of BT_ERR and BT_DBG to bt_dev_err and
> bt_dev_dbg which can be enabled at runtime when BT_FEATURE_DEBUG is
> enabled.
> 
> Note: Not all instances could be converted as some are exercised by
> selftest.

so you added the note and then still converted the selftests ;)

Regards

Marcel


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg
  2021-03-11 10:48   ` Marcel Holtmann
@ 2021-03-11 21:16     ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2021-03-11 21:16 UTC (permalink / raw)
  To: Marcel Holtmann; +Cc: linux-bluetooth

Hi Marcel,

On Thu, Mar 11, 2021 at 2:48 AM Marcel Holtmann <marcel@holtmann.org> wrote:
>
> Hi Luiz,
>
> > This converts instances of BT_ERR and BT_DBG to bt_dev_err and
> > bt_dev_dbg which can be enabled at runtime when BT_FEATURE_DEBUG is
> > enabled.
> >
> > Note: Not all instances could be converted as some are exercised by
> > selftest.
>
> so you added the note and then still converted the selftests ;)
>
> Regards
>
> Marcel

Looks like I missed a few looks like I didn't have BT_SELFTEST_SMP
enabled for some reason, I will send a v2 fixing the remaining
instances.

-- 
Luiz Augusto von Dentz

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-03-11 21:18 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-10 22:13 [PATCH v2 1/2] Bluetooth: SMP: Fail if remote and local public keys are identical Luiz Augusto von Dentz
2021-03-10 22:13 ` [PATCH v2 2/2] Bluetooth: SMP: Convert BT_ERR/BT_DBG to bt_dev_err/bt_dev_dbg Luiz Augusto von Dentz
2021-03-10 23:55   ` kernel test robot
2021-03-10 23:55     ` kernel test robot
2021-03-11 10:48   ` Marcel Holtmann
2021-03-11 21:16     ` Luiz Augusto von Dentz
2021-03-10 23:19 ` [v2,1/2] Bluetooth: SMP: Fail if remote and local public keys are identical bluez.test.bot
2021-03-11 10:46 ` [PATCH v2 1/2] " Marcel Holtmann

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.