| From foo@baz Sat 18 Apr 2020 11:09:57 AM CEST |
| From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| Date: Thu, 16 Apr 2020 17:57:40 +0200 |
| Subject: amd-xgbe: Use __napi_schedule() in BH context |
| |
| From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| |
| [ Upstream commit d518691cbd3be3dae218e05cca3f3fc9b2f1aa77 ] |
| |
| The driver uses __napi_schedule_irqoff() which is fine as long as it is |
| invoked with disabled interrupts by everybody. Since the commit |
| mentioned below the driver may invoke xgbe_isr_task() in tasklet/softirq |
| context. This may lead to list corruption if another driver uses |
| __napi_schedule_irqoff() in IRQ context. |
| |
| Use __napi_schedule() which safe to use from IRQ and softirq context. |
| |
| Fixes: 85b85c853401d ("amd-xgbe: Re-issue interrupt if interrupt status not cleared") |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| Acked-by: Tom Lendacky <thomas.lendacky@amd.com> |
| Cc: Tom Lendacky <thomas.lendacky@amd.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c |
| +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c |
| @@ -514,7 +514,7 @@ static void xgbe_isr_task(unsigned long |
| xgbe_disable_rx_tx_ints(pdata); |
| |
| /* Turn on polling */ |
| - __napi_schedule_irqoff(&pdata->napi); |
| + __napi_schedule(&pdata->napi); |
| } |
| } else { |
| /* Don't clear Rx/Tx status if doing per channel DMA |