From debf6d265f2b35f86a18d17956fe3ea9a4b9d395 Mon Sep 17 00:00:00 2001 From: Oleg Drokin Date: Sat, 29 Sep 2012 16:15:40 -0400 Subject: [PATCH] LU-2053 crypto: Fix cfs_crypto_hash memleak Commit 353e3c2f8d9f195c0f87a16259f22b2f84de11d4 that introduced cryptoapi support to Lustre is allocating a hdesc in cfs_crypto_hash_init and never freeing it. This function is called every time a checksum needs to be calculated, so on every bulk RPC send or receive, so even though allocations are small, they tend to still quickly consume all available memory with any significant amount of IO. Change-Id: Ic654c6102ea4306a81c1f7592c81cfb6e597f1f2 Signed-off-by: Oleg Drokin Reviewed-on: http://review.whamcloud.com/4135 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Alexander Boyko --- libcfs/libcfs/linux/linux-crypto.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libcfs/libcfs/linux/linux-crypto.c b/libcfs/libcfs/linux/linux-crypto.c index bacf26a..002b241 100644 --- a/libcfs/libcfs/linux/linux-crypto.c +++ b/libcfs/libcfs/linux/linux-crypto.c @@ -249,6 +249,7 @@ int cfs_crypto_hash_final(struct cfs_crypto_hash_desc *hdesc, if (hash_len == NULL) { crypto_free_hash(((struct hash_desc *)hdesc)->tfm); + cfs_free(hdesc); return 0; } if (hash == NULL || *hash_len < size) { @@ -262,6 +263,7 @@ int cfs_crypto_hash_final(struct cfs_crypto_hash_desc *hdesc, return err; } crypto_free_hash(((struct hash_desc *)hdesc)->tfm); + cfs_free(hdesc); return err; } EXPORT_SYMBOL(cfs_crypto_hash_final); -- 1.8.3.1