summary refs log tree commit diff
path: root/crypto/cryptd.c
diff options
context:
space:
mode:
authorVincent Whitchurch <vincent.whitchurch@axis.com>2019-07-02 09:53:25 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2019-07-03 22:11:55 +0800
commit1a0fad630e0b7cff38e7691b28b0517cfbb0633f (patch)
tree880fc622aa8a5fb4acc28a676987c04b3f7f6dbe /crypto/cryptd.c
parentc8ea9fce2baf7b643384f36f29e4194fa40d33a6 (diff)
downloadlinux-1a0fad630e0b7cff38e7691b28b0517cfbb0633f.tar.gz
crypto: cryptd - Fix skcipher instance memory leak
cryptd_skcipher_free() fails to free the struct skcipher_instance
allocated in cryptd_create_skcipher(), leading to a memory leak.  This
is detected by kmemleak on bootup on ARM64 platforms:

 unreferenced object 0xffff80003377b180 (size 1024):
   comm "cryptomgr_probe", pid 822, jiffies 4294894830 (age 52.760s)
   backtrace:
     kmem_cache_alloc_trace+0x270/0x2d0
     cryptd_create+0x990/0x124c
     cryptomgr_probe+0x5c/0x1e8
     kthread+0x258/0x318
     ret_from_fork+0x10/0x1c

Fixes: 4e0958d19bd8 ("crypto: cryptd - Add support for skcipher")
Cc: <stable@vger.kernel.org>
Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/cryptd.c')
-rw-r--r--crypto/cryptd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/crypto/cryptd.c b/crypto/cryptd.c
index b3bb99390ae7..c8434042cbc1 100644
--- a/crypto/cryptd.c
+++ b/crypto/cryptd.c
@@ -393,6 +393,7 @@ static void cryptd_skcipher_free(struct skcipher_instance *inst)
 	struct skcipherd_instance_ctx *ctx = skcipher_instance_ctx(inst);
 
 	crypto_drop_skcipher(&ctx->spawn);
+	kfree(inst);
 }
 
 static int cryptd_create_skcipher(struct crypto_template *tmpl,