eth: 8139too: fix calling napi_enable() in atomic context
napi_enable() may sleep now, take netdev_lock() before tp->lock and
tp->rx_lock.
Fixes: 413f0271f3
("net: protect NAPI enablement with netdev_lock()")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/dcfd56bc-de32-4b11-9e19-d8bd1543745d@stanley.mountain
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
Link: https://patch.msgid.link/20250124031841.1179756-5-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
5c4470a171
commit
d19e612c47
1 changed files with 3 additions and 1 deletions
|
@ -1684,6 +1684,7 @@ static void rtl8139_tx_timeout_task (struct work_struct *work)
|
|||
if (tmp8 & CmdTxEnb)
|
||||
RTL_W8 (ChipCmd, CmdRxEnb);
|
||||
|
||||
netdev_lock(dev);
|
||||
spin_lock_bh(&tp->rx_lock);
|
||||
/* Disable interrupts by clearing the interrupt mask. */
|
||||
RTL_W16 (IntrMask, 0x0000);
|
||||
|
@ -1694,11 +1695,12 @@ static void rtl8139_tx_timeout_task (struct work_struct *work)
|
|||
spin_unlock_irq(&tp->lock);
|
||||
|
||||
/* ...and finally, reset everything */
|
||||
napi_enable(&tp->napi);
|
||||
napi_enable_locked(&tp->napi);
|
||||
rtl8139_hw_start(dev);
|
||||
netif_wake_queue(dev);
|
||||
|
||||
spin_unlock_bh(&tp->rx_lock);
|
||||
netdev_unlock(dev);
|
||||
}
|
||||
|
||||
static void rtl8139_tx_timeout(struct net_device *dev, unsigned int txqueue)
|
||||
|
|
Loading…
Add table
Reference in a new issue