Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

atm: eni: Use tasklet_disable_in_atomic() in the send() callback

The atmdev_ops::send callback which calls tasklet_disable() is invoked with
bottom halfs disabled from net_device_ops::ndo_start_xmit(). All other
invocations of tasklet_disable() in this driver happen in preemptible
context.

Change the send() call to use tasklet_disable_in_atomic() which allows
tasklet_disable() to be made sleepable once the remaining atomic context
usage sites are cleaned up.

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.415583839@linutronix.de

authored by

Sebastian Andrzej Siewior and committed by
Thomas Gleixner
405698ca 3250aa8a

+1 -1
+1 -1
drivers/atm/eni.c
··· 2054 2054 } 2055 2055 submitted++; 2056 2056 ATM_SKB(skb)->vcc = vcc; 2057 - tasklet_disable(&ENI_DEV(vcc->dev)->task); 2057 + tasklet_disable_in_atomic(&ENI_DEV(vcc->dev)->task); 2058 2058 res = do_tx(skb); 2059 2059 tasklet_enable(&ENI_DEV(vcc->dev)->task); 2060 2060 if (res == enq_ok) return 0;