Bluetooth: hci_ecc: Use ATOMIC_DEFINE() for the flags

This doesn't make much practical difference, however it should resolve
Coverity CIDs 170740 and 170748.

Jira: ZEP-2343

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
Johan Hedberg 2017-06-30 10:03:07 +03:00 committed by Johan Hedberg
commit c55870e885

View file

@ -57,9 +57,12 @@ static const u8_t debug_public_key[64] = {
enum { enum {
PENDING_PUB_KEY, PENDING_PUB_KEY,
PENDING_DHKEY, PENDING_DHKEY,
/* Total number of flags - must be at the end of the enum */
NUM_FLAGS,
}; };
static atomic_t flags; static ATOMIC_DEFINE(flags, NUM_FLAGS);
static K_SEM_DEFINE(cmd_sem, 0, 1); static K_SEM_DEFINE(cmd_sem, 0, 1);
@ -158,7 +161,7 @@ static void emulate_le_p256_public_key_cmd(void)
memcpy(&evt->key[32], ecc.pk.y, 32); memcpy(&evt->key[32], ecc.pk.y, 32);
} }
atomic_clear_bit(&flags, PENDING_PUB_KEY); atomic_clear_bit(flags, PENDING_PUB_KEY);
bt_recv(buf); bt_recv(buf);
} }
@ -196,7 +199,7 @@ static void emulate_le_generate_dhkey(void)
memcpy(evt->dhkey, ecc.dhkey, sizeof(ecc.dhkey)); memcpy(evt->dhkey, ecc.dhkey, sizeof(ecc.dhkey));
} }
atomic_clear_bit(&flags, PENDING_DHKEY); atomic_clear_bit(flags, PENDING_DHKEY);
bt_recv(buf); bt_recv(buf);
} }
@ -206,9 +209,9 @@ static void ecc_thread(void *p1, void *p2, void *p3)
while (true) { while (true) {
k_sem_take(&cmd_sem, K_FOREVER); k_sem_take(&cmd_sem, K_FOREVER);
if (atomic_test_bit(&flags, PENDING_PUB_KEY)) { if (atomic_test_bit(flags, PENDING_PUB_KEY)) {
emulate_le_p256_public_key_cmd(); emulate_le_p256_public_key_cmd();
} else if (atomic_test_bit(&flags, PENDING_DHKEY)) { } else if (atomic_test_bit(flags, PENDING_DHKEY)) {
emulate_le_generate_dhkey(); emulate_le_generate_dhkey();
} else { } else {
__ASSERT(0, "Unhandled ECC command"); __ASSERT(0, "Unhandled ECC command");
@ -237,7 +240,7 @@ static void le_gen_dhkey(struct net_buf *buf)
struct bt_hci_cp_le_generate_dhkey *cmd; struct bt_hci_cp_le_generate_dhkey *cmd;
u8_t status; u8_t status;
if (atomic_test_bit(&flags, PENDING_PUB_KEY)) { if (atomic_test_bit(flags, PENDING_PUB_KEY)) {
status = BT_HCI_ERR_CMD_DISALLOWED; status = BT_HCI_ERR_CMD_DISALLOWED;
goto send_status; goto send_status;
} }
@ -247,7 +250,7 @@ static void le_gen_dhkey(struct net_buf *buf)
goto send_status; goto send_status;
} }
if (atomic_test_and_set_bit(&flags, PENDING_DHKEY)) { if (atomic_test_and_set_bit(flags, PENDING_DHKEY)) {
status = BT_HCI_ERR_CMD_DISALLOWED; status = BT_HCI_ERR_CMD_DISALLOWED;
goto send_status; goto send_status;
} }
@ -269,9 +272,9 @@ static void le_p256_pub_key(struct net_buf *buf)
net_buf_unref(buf); net_buf_unref(buf);
if (atomic_test_bit(&flags, PENDING_DHKEY)) { if (atomic_test_bit(flags, PENDING_DHKEY)) {
status = BT_HCI_ERR_CMD_DISALLOWED; status = BT_HCI_ERR_CMD_DISALLOWED;
} else if (atomic_test_and_set_bit(&flags, PENDING_PUB_KEY)) { } else if (atomic_test_and_set_bit(flags, PENDING_PUB_KEY)) {
status = BT_HCI_ERR_CMD_DISALLOWED; status = BT_HCI_ERR_CMD_DISALLOWED;
} else { } else {
k_sem_give(&cmd_sem); k_sem_give(&cmd_sem);