Patch "crypto: api - Fix liveliness check in crypto_alg_tested" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    crypto: api - Fix liveliness check in crypto_alg_tested

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     crypto-api-fix-liveliness-check-in-crypto_alg_tested.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 7b3e271547708db86b83d83c3bdac3bca9494433
Author: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Date:   Sun Oct 6 09:18:37 2024 +0800

    crypto: api - Fix liveliness check in crypto_alg_tested
    
    [ Upstream commit b81e286ba154a4e0f01a94d99179a97f4ba3e396 ]
    
    As algorithm testing is carried out without holding the main crypto
    lock, it is always possible for the algorithm to go away during the
    test.
    
    So before crypto_alg_tested updates the status of the tested alg,
    it checks whether it's still on the list of all algorithms.  This
    is inaccurate because it may be off the main list but still on the
    list of algorithms to be removed.
    
    Updating the algorithm status is safe per se as the larval still
    holds a reference to it.  However, killing spawns of other algorithms
    that are of lower priority is clearly a deficiency as it adds
    unnecessary churn.
    
    Fix the test by checking whether the algorithm is dead.
    
    Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/crypto/algapi.c b/crypto/algapi.c
index 5dc9ccdd5a510..206a13f395967 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -341,7 +341,7 @@ void crypto_alg_tested(const char *name, int err)
 	q->cra_flags |= CRYPTO_ALG_DEAD;
 	alg = test->adult;
 
-	if (list_empty(&alg->cra_list))
+	if (crypto_is_dead(alg))
 		goto complete;
 
 	if (err == -ECANCELED)




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux