From: Brian Gix Date: Wed, 23 Nov 2011 16:28:35 +0000 (-0800) Subject: Bluetooth: Cleanup blkcipher on SMP termination X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=c8eb969071032defb1dc493ae28cf2e2a31193a5;p=deliverable%2Flinux.git Bluetooth: Cleanup blkcipher on SMP termination The blkcipher must be freed to avoid memory leak. Signed-off-by: Brian Gix Signed-off-by: Gustavo F. Padovan --- diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 94e94ca35384..b9af4885ae53 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -379,7 +379,15 @@ static struct smp_chan *smp_chan_create(struct l2cap_conn *conn) void smp_chan_destroy(struct l2cap_conn *conn) { - kfree(conn->smp_chan); + struct smp_chan *smp = conn->smp_chan; + + clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->pend); + + if (smp->tfm) + crypto_free_blkcipher(smp->tfm); + + kfree(smp); + conn->smp_chan = NULL; hci_conn_put(conn->hcon); }