crypto: testmgr - Only disable migration in crypto_disable_simd_for_test()
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Tue, 28 Sep 2021 11:54:01 +0000 (13:54 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 8 Oct 2021 12:02:46 +0000 (20:02 +0800)
crypto_disable_simd_for_test() disables preemption in order to receive a
stable per-CPU variable which it needs to modify in order to alter
crypto_simd_usable() results.

This can also be achived by migrate_disable() which forbidds CPU
migrations but allows the task to be preempted. The latter is important
for PREEMPT_RT since operation like skcipher_walk_first() may allocate
memory which must not happen with disabled preemption on PREEMPT_RT.

Use migrate_disable() in crypto_disable_simd_for_test() to achieve a
stable per-CPU pointer.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/testmgr.c

index 70f69f0..58eee8e 100644 (file)
@@ -1061,14 +1061,14 @@ static void generate_random_testvec_config(struct testvec_config *cfg,
 
 static void crypto_disable_simd_for_test(void)
 {
-       preempt_disable();
+       migrate_disable();
        __this_cpu_write(crypto_simd_disabled_for_test, true);
 }
 
 static void crypto_reenable_simd_for_test(void)
 {
        __this_cpu_write(crypto_simd_disabled_for_test, false);
-       preempt_enable();
+       migrate_enable();
 }
 
 /*