Bluetooth: host: Move pending keys pending flags out of key storage
Move the pending ID keys add and delete flag out of keys storage area. These flags are runtime flags and should not be stored in persistent storage. Due to struct alignment storage start has to be aligned so that variables added before storage start does not affect the storage bytes by introducing padding in the storage area Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
This commit is contained in:
parent
96c733c4d7
commit
c8b3d2772a
2 changed files with 13 additions and 8 deletions
|
@ -1700,14 +1700,14 @@ static void slave_update_conn_param(struct bt_conn *conn)
|
|||
#if defined(CONFIG_BT_SMP)
|
||||
static void pending_id_update(struct bt_keys *keys, void *data)
|
||||
{
|
||||
if (keys->flags & BT_KEYS_ID_PENDING_ADD) {
|
||||
keys->flags &= ~BT_KEYS_ID_PENDING_ADD;
|
||||
if (keys->state & BT_KEYS_ID_PENDING_ADD) {
|
||||
keys->state &= ~BT_KEYS_ID_PENDING_ADD;
|
||||
bt_id_add(keys);
|
||||
return;
|
||||
}
|
||||
|
||||
if (keys->flags & BT_KEYS_ID_PENDING_DEL) {
|
||||
keys->flags &= ~BT_KEYS_ID_PENDING_DEL;
|
||||
if (keys->state & BT_KEYS_ID_PENDING_DEL) {
|
||||
keys->state &= ~BT_KEYS_ID_PENDING_DEL;
|
||||
bt_id_del(keys);
|
||||
return;
|
||||
}
|
||||
|
@ -1716,7 +1716,7 @@ static void pending_id_update(struct bt_keys *keys, void *data)
|
|||
static void pending_id_keys_update_set(struct bt_keys *keys, u8_t flag)
|
||||
{
|
||||
atomic_set_bit(bt_dev.flags, BT_DEV_ID_PENDING);
|
||||
keys->flags |= flag;
|
||||
keys->state |= flag;
|
||||
}
|
||||
|
||||
static void pending_id_keys_update(void)
|
||||
|
|
|
@ -19,11 +19,15 @@ enum {
|
|||
BT_KEYS_REMOTE_CSRK | BT_KEYS_LTK_P256),
|
||||
};
|
||||
|
||||
enum {
|
||||
BT_KEYS_ID_PENDING_ADD = BIT(0),
|
||||
BT_KEYS_ID_PENDING_DEL = BIT(1),
|
||||
};
|
||||
|
||||
enum {
|
||||
BT_KEYS_AUTHENTICATED = BIT(0),
|
||||
BT_KEYS_DEBUG = BIT(1),
|
||||
BT_KEYS_ID_PENDING_ADD = BIT(2),
|
||||
BT_KEYS_ID_PENDING_DEL = BIT(3),
|
||||
/* Bit 2 and 3 might accidentally exist in old stored keys */
|
||||
BT_KEYS_SC = BIT(4),
|
||||
};
|
||||
|
||||
|
@ -46,7 +50,8 @@ struct bt_csrk {
|
|||
struct bt_keys {
|
||||
u8_t id;
|
||||
bt_addr_le_t addr;
|
||||
u8_t storage_start[0];
|
||||
u8_t state;
|
||||
u8_t storage_start[0] __aligned(sizeof(void *));
|
||||
u8_t enc_size;
|
||||
u8_t flags;
|
||||
u16_t keys;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue