From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vakul Garg Subject: [PATCH net-next] tls: Fixed a memory leak during socket close Date: Tue, 25 Sep 2018 20:21:51 +0530 Message-ID: <20180925145151.10992-1-vakul.garg@nxp.com> Mime-Version: 1.0 Content-Type: text/plain Cc: borisp@mellanox.com, aviadye@mellanox.com, davejwatson@fb.com, davem@davemloft.net, doronrk@fb.com, Vakul Garg To: netdev@vger.kernel.org Return-path: Received: from mail-eopbgr30088.outbound.protection.outlook.com ([40.107.3.88]:36160 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729098AbeIYVA3 (ORCPT ); Tue, 25 Sep 2018 17:00:29 -0400 Sender: netdev-owner@vger.kernel.org List-ID: 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: a42055e8d2c3 ("net/tls: Add support for async encryption") Signed-off-by: Vakul Garg --- net/tls/tls_sw.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index bf03f32aa983..6f2dc1873556 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -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); @@ -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) @@ -1580,7 +1582,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); } -- 2.13.6