net: sundance: Use tasklet_disable_in_atomic().
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Tue, 9 Mar 2021 08:42:12 +0000 (09:42 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 17 Mar 2021 15:34:00 +0000 (16:34 +0100)
tasklet_disable() is used in the timer callback. This might be distangled,
but without access to the hardware that's a bit risky.

Replace it with tasklet_disable_in_atomic() so tasklet_disable() can be
changed to a sleep wait once all remaining atomic users are converted.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210309084242.209110861@linutronix.de
drivers/net/ethernet/dlink/sundance.c

index e3a8858..df0eab4 100644 (file)
@@ -963,7 +963,7 @@ static void tx_timeout(struct net_device *dev, unsigned int txqueue)
        unsigned long flag;
 
        netif_stop_queue(dev);
-       tasklet_disable(&np->tx_tasklet);
+       tasklet_disable_in_atomic(&np->tx_tasklet);
        iowrite16(0, ioaddr + IntrEnable);
        printk(KERN_WARNING "%s: Transmit timed out, TxStatus %2.2x "
                   "TxFrameId %2.2x,"