aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@intel.com>2014-09-10 20:37:43 -0400
committerMarcel Holtmann <marcel@holtmann.org>2014-09-10 20:45:24 -0400
commit24bd0bd94e0947e257c5cd6a85b0e337d953e79c (patch)
tree9cbdb05d7dd446f4355f3c8cd4c7ae1b6a833ab4 /net
parentc05b9339c8a448a2df0c8598424ea9c0933288d1 (diff)
Bluetooth: Centralize disallowing SMP commands to a single place
All the cases where we mark SMP commands as dissalowed are their respective command handlers. We can therefore simplify the code by always clearing the bit immediately after testing it. This patch converts the corresponding test_bit() call to a test_and_clear_bit() call and also removes the now unused SMP_DISALLOW_CMD macro. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net')
-rw-r--r--net/bluetooth/smp.c17
1 files changed, 1 insertions, 16 deletions
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index ef8f96d2c059..be8371b4eb63 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -32,7 +32,6 @@
32#include "smp.h" 32#include "smp.h"
33 33
34#define SMP_ALLOW_CMD(smp, code) set_bit(code, &smp->allow_cmd) 34#define SMP_ALLOW_CMD(smp, code) set_bit(code, &smp->allow_cmd)
35#define SMP_DISALLOW_CMD(smp, code) clear_bit(code, &smp->allow_cmd)
36 35
37#define SMP_TIMEOUT msecs_to_jiffies(30000) 36#define SMP_TIMEOUT msecs_to_jiffies(30000)
38 37
@@ -956,8 +955,6 @@ static u8 smp_cmd_pairing_req(struct l2cap_conn *conn, struct sk_buff *skb)
956 (auth & SMP_AUTH_BONDING)) 955 (auth & SMP_AUTH_BONDING))
957 return SMP_PAIRING_NOTSUPP; 956 return SMP_PAIRING_NOTSUPP;
958 957
959 SMP_DISALLOW_CMD(smp, SMP_CMD_PAIRING_REQ);
960
961 smp->preq[0] = SMP_CMD_PAIRING_REQ; 958 smp->preq[0] = SMP_CMD_PAIRING_REQ;
962 memcpy(&smp->preq[1], req, sizeof(*req)); 959 memcpy(&smp->preq[1], req, sizeof(*req));
963 skb_pull(skb, sizeof(*req)); 960 skb_pull(skb, sizeof(*req));
@@ -1014,8 +1011,6 @@ static u8 smp_cmd_pairing_rsp(struct l2cap_conn *conn, struct sk_buff *skb)
1014 if (conn->hcon->role != HCI_ROLE_MASTER) 1011 if (conn->hcon->role != HCI_ROLE_MASTER)
1015 return SMP_CMD_NOTSUPP; 1012 return SMP_CMD_NOTSUPP;
1016 1013
1017 SMP_DISALLOW_CMD(smp, SMP_CMD_PAIRING_RSP);
1018
1019 skb_pull(skb, sizeof(*rsp)); 1014 skb_pull(skb, sizeof(*rsp));
1020 1015
1021 req = (void *) &smp->preq[1]; 1016 req = (void *) &smp->preq[1];
@@ -1071,8 +1066,6 @@ static u8 smp_cmd_pairing_confirm(struct l2cap_conn *conn, struct sk_buff *skb)
1071 if (skb->len < sizeof(smp->pcnf)) 1066 if (skb->len < sizeof(smp->pcnf))
1072 return SMP_INVALID_PARAMS; 1067 return SMP_INVALID_PARAMS;
1073 1068
1074 SMP_DISALLOW_CMD(smp, SMP_CMD_PAIRING_CONFIRM);
1075
1076 memcpy(smp->pcnf, skb->data, sizeof(smp->pcnf)); 1069 memcpy(smp->pcnf, skb->data, sizeof(smp->pcnf));
1077 skb_pull(skb, sizeof(smp->pcnf)); 1070 skb_pull(skb, sizeof(smp->pcnf));
1078 1071
@@ -1101,8 +1094,6 @@ static u8 smp_cmd_pairing_random(struct l2cap_conn *conn, struct sk_buff *skb)
1101 if (skb->len < sizeof(smp->rrnd)) 1094 if (skb->len < sizeof(smp->rrnd))
1102 return SMP_INVALID_PARAMS; 1095 return SMP_INVALID_PARAMS;
1103 1096
1104 SMP_DISALLOW_CMD(smp, SMP_CMD_PAIRING_RANDOM);
1105
1106 memcpy(smp->rrnd, skb->data, sizeof(smp->rrnd)); 1097 memcpy(smp->rrnd, skb->data, sizeof(smp->rrnd));
1107 skb_pull(skb, sizeof(smp->rrnd)); 1098 skb_pull(skb, sizeof(smp->rrnd));
1108 1099
@@ -1293,7 +1284,6 @@ static int smp_cmd_encrypt_info(struct l2cap_conn *conn, struct sk_buff *skb)
1293 if (skb->len < sizeof(*rp)) 1284 if (skb->len < sizeof(*rp))
1294 return SMP_INVALID_PARAMS; 1285 return SMP_INVALID_PARAMS;
1295 1286
1296 SMP_DISALLOW_CMD(smp, SMP_CMD_ENCRYPT_INFO);
1297 SMP_ALLOW_CMD(smp, SMP_CMD_MASTER_IDENT); 1287 SMP_ALLOW_CMD(smp, SMP_CMD_MASTER_IDENT);
1298 1288
1299 skb_pull(skb, sizeof(*rp)); 1289 skb_pull(skb, sizeof(*rp));
@@ -1321,7 +1311,6 @@ static int smp_cmd_master_ident(struct l2cap_conn *conn, struct sk_buff *skb)
1321 /* Mark the information as received */ 1311 /* Mark the information as received */
1322 smp->remote_key_dist &= ~SMP_DIST_ENC_KEY; 1312 smp->remote_key_dist &= ~SMP_DIST_ENC_KEY;
1323 1313
1324 SMP_DISALLOW_CMD(smp, SMP_CMD_MASTER_IDENT);
1325 if (smp->remote_key_dist & SMP_DIST_ID_KEY) 1314 if (smp->remote_key_dist & SMP_DIST_ID_KEY)
1326 SMP_ALLOW_CMD(smp, SMP_CMD_IDENT_INFO); 1315 SMP_ALLOW_CMD(smp, SMP_CMD_IDENT_INFO);
1327 else if (smp->remote_key_dist & SMP_DIST_SIGN) 1316 else if (smp->remote_key_dist & SMP_DIST_SIGN)
@@ -1353,7 +1342,6 @@ static int smp_cmd_ident_info(struct l2cap_conn *conn, struct sk_buff *skb)
1353 if (skb->len < sizeof(*info)) 1342 if (skb->len < sizeof(*info))
1354 return SMP_INVALID_PARAMS; 1343 return SMP_INVALID_PARAMS;
1355 1344
1356 SMP_DISALLOW_CMD(smp, SMP_CMD_IDENT_INFO);
1357 SMP_ALLOW_CMD(smp, SMP_CMD_IDENT_ADDR_INFO); 1345 SMP_ALLOW_CMD(smp, SMP_CMD_IDENT_ADDR_INFO);
1358 1346
1359 skb_pull(skb, sizeof(*info)); 1347 skb_pull(skb, sizeof(*info));
@@ -1380,7 +1368,6 @@ static int smp_cmd_ident_addr_info(struct l2cap_conn *conn,
1380 /* Mark the information as received */ 1368 /* Mark the information as received */
1381 smp->remote_key_dist &= ~SMP_DIST_ID_KEY; 1369 smp->remote_key_dist &= ~SMP_DIST_ID_KEY;
1382 1370
1383 SMP_DISALLOW_CMD(smp, SMP_CMD_IDENT_ADDR_INFO);
1384 if (smp->remote_key_dist & SMP_DIST_SIGN) 1371 if (smp->remote_key_dist & SMP_DIST_SIGN)
1385 SMP_ALLOW_CMD(smp, SMP_CMD_SIGN_INFO); 1372 SMP_ALLOW_CMD(smp, SMP_CMD_SIGN_INFO);
1386 1373
@@ -1436,8 +1423,6 @@ static int smp_cmd_sign_info(struct l2cap_conn *conn, struct sk_buff *skb)
1436 /* Mark the information as received */ 1423 /* Mark the information as received */
1437 smp->remote_key_dist &= ~SMP_DIST_SIGN; 1424 smp->remote_key_dist &= ~SMP_DIST_SIGN;
1438 1425
1439 SMP_DISALLOW_CMD(smp, SMP_CMD_SIGN_INFO);
1440
1441 skb_pull(skb, sizeof(*rp)); 1426 skb_pull(skb, sizeof(*rp));
1442 1427
1443 hci_dev_lock(hdev); 1428 hci_dev_lock(hdev);
@@ -1482,7 +1467,7 @@ static int smp_sig_channel(struct l2cap_chan *chan, struct sk_buff *skb)
1482 if (code > SMP_CMD_MAX) 1467 if (code > SMP_CMD_MAX)
1483 goto drop; 1468 goto drop;
1484 1469
1485 if (smp && !test_bit(code, &smp->allow_cmd)) 1470 if (smp && !test_and_clear_bit(code, &smp->allow_cmd))
1486 goto drop; 1471 goto drop;
1487 1472
1488 /* If we don't have a context the only allowed commands are 1473 /* If we don't have a context the only allowed commands are