Skip to content

Commit b270bfe

Browse files
Yackoukuba-moo
authored andcommitted
net: stmmac: Disable Tx queues when reconfiguring the interface
The Tx queues were not disabled in situations where the driver needed to stop the interface to apply a new configuration. This could result in a kernel panic when doing any of the 3 following actions: * reconfiguring the number of queues (ethtool -L) * reconfiguring the size of the ring buffers (ethtool -G) * installing/removing an XDP program (ip l set dev ethX xdp) Prevent the panic by making sure netif_tx_disable is called when stopping an interface. Without this patch, the following kernel panic can be observed when doing any of the actions above: Unable to handle kernel paging request at virtual address ffff80001238d040 [....] Call trace: dwmac4_set_addr+0x8/0x10 dev_hard_start_xmit+0xe4/0x1ac sch_direct_xmit+0xe8/0x39c __dev_queue_xmit+0x3ec/0xaf0 dev_queue_xmit+0x14/0x20 [...] [ end trace 0000000000000002 ]--- Fixes: 5fabb01 ("net: stmmac: Add initial XDP support") Fixes: aa042f6 ("net: stmmac: Add support to Ethtool get/set ring parameters") Fixes: 0366f7e ("net: stmmac: add ethtool support for get/set channels") Signed-off-by: Yannick Vignon <yannick.vignon@nxp.com> Link: https://lore.kernel.org/r/20211124154731.1676949-1-yannick.vignon@oss.nxp.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 49573ff commit b270bfe

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3802,6 +3802,8 @@ int stmmac_release(struct net_device *dev)
38023802
struct stmmac_priv *priv = netdev_priv(dev);
38033803
u32 chan;
38043804

3805+
netif_tx_disable(dev);
3806+
38053807
if (device_may_wakeup(priv->device))
38063808
phylink_speed_down(priv->phylink, false);
38073809
/* Stop and disconnect the PHY */

0 commit comments

Comments
 (0)