Skip to content

Commit

Permalink
tls: Fixed a memory leak during socket close
Browse files Browse the repository at this point in the history
During socket close, if there is a open record with tx context, it needs
to be be freed apart from freeing up plaintext and encrypted scatter
lists. This patch frees up the open record if present in tx context.

Also tls_free_both_sg() has been renamed to tls_free_open_rec() to
indicate that the free record in tx context is being freed inside the
function.

Fixes: a42055e ("net/tls: Add support for async encryption")
Signed-off-by: Vakul Garg <vakul.garg@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Vakul Garg authored and David S. Miller committed Sep 25, 2018
1 parent b85135b commit c774973
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions net/tls/tls_sw.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ static void free_sg(struct sock *sk, struct scatterlist *sg,
*sg_size = 0;
}

static void tls_free_both_sg(struct sock *sk)
static void tls_free_open_rec(struct sock *sk)
{
struct tls_context *tls_ctx = tls_get_ctx(sk);
struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx);
Expand All @@ -327,6 +327,8 @@ static void tls_free_both_sg(struct sock *sk)
free_sg(sk, rec->sg_plaintext_data,
&rec->sg_plaintext_num_elem,
&rec->sg_plaintext_size);

kfree(rec);
}

int tls_tx_records(struct sock *sk, int flags)
Expand Down Expand Up @@ -1591,7 +1593,7 @@ void tls_sw_free_resources_tx(struct sock *sk)
}

crypto_free_aead(ctx->aead_send);
tls_free_both_sg(sk);
tls_free_open_rec(sk);

kfree(ctx);
}
Expand Down

0 comments on commit c774973

Please sign in to comment.