aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorIvan Pravdin <ipravdin.official@gmail.com>2025-05-18 18:41:02 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2025-05-19 13:44:16 +0800
commitb2df03ed4052e97126267e8c13ad4204ea6ba9b6 (patch)
tree195d9ca059427d2a2e481d1e4341ac18ae339189 /crypto
parentpadata: do not leak refcount in reorder_work (diff)
downloadlaptop-kernel-b2df03ed4052e97126267e8c13ad4204ea6ba9b6.tar.xz
laptop-kernel-b2df03ed4052e97126267e8c13ad4204ea6ba9b6.zip
crypto: algif_hash - fix double free in hash_accept
If accept(2) is called on socket type algif_hash with MSG_MORE flag set and crypto_ahash_import fails, sk2 is freed. However, it is also freed in af_alg_release, leading to slab-use-after-free error. Fixes: fe869cdb89c9 ("crypto: algif_hash - User-space interface for hash operations") Cc: <stable@vger.kernel.org> Signed-off-by: Ivan Pravdin <ipravdin.official@gmail.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/algif_hash.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/crypto/algif_hash.c b/crypto/algif_hash.c
index 5498a87249d3..e3f1a4852737 100644
--- a/crypto/algif_hash.c
+++ b/crypto/algif_hash.c
@@ -265,10 +265,6 @@ static int hash_accept(struct socket *sock, struct socket *newsock,
goto out_free_state;
err = crypto_ahash_import(&ctx2->req, state);
- if (err) {
- sock_orphan(sk2);
- sock_put(sk2);
- }
out_free_state:
kfree_sensitive(state);