]> git.baikalelectronics.ru Git - kernel.git/commit
net: Treat __napi_schedule_irqoff() as __napi_schedule() on PREEMPT_RT
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Wed, 12 May 2021 21:43:24 +0000 (23:43 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 13 May 2021 20:11:19 +0000 (13:11 -0700)
commit27fac22a4e66fc2179228b2d2da9bdd15f82faa1
treeca39ad3cf9a73766ff1596ead28883cbf60be310
parentf4eba221099ea34fd6f61f6aa77f14a09d4406bb
net: Treat __napi_schedule_irqoff() as __napi_schedule() on PREEMPT_RT

__napi_schedule_irqoff() is an optimized version of __napi_schedule()
which can be used where it is known that interrupts are disabled,
e.g. in interrupt-handlers, spin_lock_irq() sections or hrtimer
callbacks.

On PREEMPT_RT enabled kernels this assumptions is not true. Force-
threaded interrupt handlers and spinlocks are not disabling interrupts
and the NAPI hrtimer callback is forced into softirq context which runs
with interrupts enabled as well.

Chasing all usage sites of __napi_schedule_irqoff() is a whack-a-mole
game so make __napi_schedule_irqoff() invoke __napi_schedule() for
PREEMPT_RT kernels.

The callers of ____napi_schedule() in the networking core have been
audited and are correct on PREEMPT_RT kernels as well.

Reported-by: Juri Lelli <juri.lelli@redhat.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Juri Lelli <juri.lelli@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c