tasklets: Use spin wait in tasklet_disable() temporarily
authorThomas Gleixner <tglx@linutronix.de>
Tue, 9 Mar 2021 08:42:07 +0000 (09:42 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 17 Mar 2021 15:33:54 +0000 (16:33 +0100)
To ease the transition use spin waiting in tasklet_disable() until all
usage sites from atomic context have been cleaned up.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210309084241.685352806@linutronix.de
include/linux/interrupt.h

index 3c8a29176258fc343ef0517d37f0df9e26ac8d1d..b7f00121f12443de31f43e0ed416ab52aea3489c 100644 (file)
@@ -728,7 +728,8 @@ static inline void tasklet_disable_in_atomic(struct tasklet_struct *t)
 static inline void tasklet_disable(struct tasklet_struct *t)
 {
        tasklet_disable_nosync(t);
-       tasklet_unlock_wait(t);
+       /* Spin wait until all atomic users are converted */
+       tasklet_unlock_spin_wait(t);
        smp_mb();
 }