]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: api - Fix boot-up self-test race
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 15 Nov 2024 01:29:02 +0000 (09:29 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 10 Dec 2024 05:44:20 +0000 (13:44 +0800)
During the boot process self-tests are postponed so that all
algorithms are registered when the test starts.  In the event
that algorithms are still being registered during these tests,
which can occur either because the algorithm is registered at
late_initcall, or because a self-test itself triggers the creation
of an instance, some self-tests may never start at all.

Fix this by setting the flag at the start of crypto_start_tests.

Note that this race is theoretical and has never been observed
in practice.

Fixes: adad556efcdd ("crypto: api - Fix built-in testing dependency failures")
Signed-off-by: Herbert Xu <herbert.xu@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/algapi.c

index 16f7c7a9d8ab6641220924525189c8d707ec8d00..7e061d8a1d52dd28fc19f3e15820d87c93d729bd 100644 (file)
@@ -1016,6 +1016,8 @@ static void __init crypto_start_tests(void)
        if (IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS))
                return;
 
+       set_crypto_boot_test_finished();
+
        for (;;) {
                struct crypto_larval *larval = NULL;
                struct crypto_alg *q;
@@ -1047,8 +1049,6 @@ static void __init crypto_start_tests(void)
                if (!larval)
                        break;
        }
-
-       set_crypto_boot_test_finished();
 }
 
 static int __init crypto_algapi_init(void)