]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
crypto: api - Check spawn->alg under lock in crypto_drop_spawn
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 6 Dec 2019 05:55:17 +0000 (13:55 +0800)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 22 May 2020 20:19:16 +0000 (21:19 +0100)
commit 7db3b61b6bba4310f454588c2ca6faf2958ad79f upstream.

We need to check whether spawn->alg is NULL under lock as otherwise
the algorithm could be removed from under us after we have checked
it and found it to be non-NULL.  This could cause us to remove the
spawn from a non-existent list.

Fixes: 7ede5a5ba55a ("crypto: api - Fix crypto_drop_spawn crash...")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
crypto/algapi.c

index 300cafd2228d99c39af4b507f2e32e9fa592b07f..89d0cde501f2b8eea7ccc1dd3ca22adbc45233bd 100644 (file)
@@ -618,11 +618,9 @@ EXPORT_SYMBOL_GPL(crypto_init_spawn2);
 
 void crypto_drop_spawn(struct crypto_spawn *spawn)
 {
-       if (!spawn->alg)
-               return;
-
        down_write(&crypto_alg_sem);
-       list_del(&spawn->list);
+       if (spawn->alg)
+               list_del(&spawn->list);
        up_write(&crypto_alg_sem);
 }
 EXPORT_SYMBOL_GPL(crypto_drop_spawn);