Bluetooth: Make smp_chan_destroy() private to smp.c
There are no external users of smp_chan_destroy() so make it private to smp.c. The patch also moves the function higher up in the c-file in order to avoid forward declarations. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
86d1407cb9
commit
6f48e260a9
@ -366,6 +366,56 @@ static u8 check_enc_key_size(struct l2cap_conn *conn, __u8 max_key_size)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void smp_chan_destroy(struct l2cap_conn *conn)
|
||||
{
|
||||
struct l2cap_chan *chan = conn->smp;
|
||||
struct smp_chan *smp = chan->data;
|
||||
bool complete;
|
||||
|
||||
BUG_ON(!smp);
|
||||
|
||||
cancel_delayed_work_sync(&smp->security_timer);
|
||||
/* In case the timeout freed the SMP context */
|
||||
if (!chan->data)
|
||||
return;
|
||||
|
||||
if (work_pending(&smp->distribute_work)) {
|
||||
cancel_work_sync(&smp->distribute_work);
|
||||
if (!chan->data)
|
||||
return;
|
||||
}
|
||||
|
||||
complete = test_bit(SMP_FLAG_COMPLETE, &smp->flags);
|
||||
mgmt_smp_complete(conn->hcon, complete);
|
||||
|
||||
kfree(smp->csrk);
|
||||
kfree(smp->slave_csrk);
|
||||
|
||||
crypto_free_blkcipher(smp->tfm_aes);
|
||||
|
||||
/* If pairing failed clean up any keys we might have */
|
||||
if (!complete) {
|
||||
if (smp->ltk) {
|
||||
list_del(&smp->ltk->list);
|
||||
kfree(smp->ltk);
|
||||
}
|
||||
|
||||
if (smp->slave_ltk) {
|
||||
list_del(&smp->slave_ltk->list);
|
||||
kfree(smp->slave_ltk);
|
||||
}
|
||||
|
||||
if (smp->remote_irk) {
|
||||
list_del(&smp->remote_irk->list);
|
||||
kfree(smp->remote_irk);
|
||||
}
|
||||
}
|
||||
|
||||
chan->data = NULL;
|
||||
kfree(smp);
|
||||
hci_conn_drop(conn->hcon);
|
||||
}
|
||||
|
||||
static void smp_failure(struct l2cap_conn *conn, u8 reason)
|
||||
{
|
||||
struct hci_conn *hcon = conn->hcon;
|
||||
@ -812,56 +862,6 @@ static struct smp_chan *smp_chan_create(struct l2cap_conn *conn)
|
||||
return smp;
|
||||
}
|
||||
|
||||
void smp_chan_destroy(struct l2cap_conn *conn)
|
||||
{
|
||||
struct l2cap_chan *chan = conn->smp;
|
||||
struct smp_chan *smp = chan->data;
|
||||
bool complete;
|
||||
|
||||
BUG_ON(!smp);
|
||||
|
||||
cancel_delayed_work_sync(&smp->security_timer);
|
||||
/* In case the timeout freed the SMP context */
|
||||
if (!chan->data)
|
||||
return;
|
||||
|
||||
if (work_pending(&smp->distribute_work)) {
|
||||
cancel_work_sync(&smp->distribute_work);
|
||||
if (!chan->data)
|
||||
return;
|
||||
}
|
||||
|
||||
complete = test_bit(SMP_FLAG_COMPLETE, &smp->flags);
|
||||
mgmt_smp_complete(conn->hcon, complete);
|
||||
|
||||
kfree(smp->csrk);
|
||||
kfree(smp->slave_csrk);
|
||||
|
||||
crypto_free_blkcipher(smp->tfm_aes);
|
||||
|
||||
/* If pairing failed clean up any keys we might have */
|
||||
if (!complete) {
|
||||
if (smp->ltk) {
|
||||
list_del(&smp->ltk->list);
|
||||
kfree(smp->ltk);
|
||||
}
|
||||
|
||||
if (smp->slave_ltk) {
|
||||
list_del(&smp->slave_ltk->list);
|
||||
kfree(smp->slave_ltk);
|
||||
}
|
||||
|
||||
if (smp->remote_irk) {
|
||||
list_del(&smp->remote_irk->list);
|
||||
kfree(smp->remote_irk);
|
||||
}
|
||||
}
|
||||
|
||||
chan->data = NULL;
|
||||
kfree(smp);
|
||||
hci_conn_drop(conn->hcon);
|
||||
}
|
||||
|
||||
int smp_user_confirm_reply(struct hci_conn *hcon, u16 mgmt_op, __le32 passkey)
|
||||
{
|
||||
struct l2cap_conn *conn = hcon->l2cap_data;
|
||||
|
@ -128,8 +128,6 @@ bool smp_sufficient_security(struct hci_conn *hcon, u8 sec_level);
|
||||
int smp_conn_security(struct hci_conn *hcon, __u8 sec_level);
|
||||
int smp_user_confirm_reply(struct hci_conn *conn, u16 mgmt_op, __le32 passkey);
|
||||
|
||||
void smp_chan_destroy(struct l2cap_conn *conn);
|
||||
|
||||
bool smp_irk_matches(struct hci_dev *hdev, u8 irk[16], bdaddr_t *bdaddr);
|
||||
int smp_generate_rpa(struct hci_dev *hdev, u8 irk[16], bdaddr_t *rpa);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user