All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] net: stmmac: Disable Tx queues when reconfiguring the interface
@ 2021-11-23 18:54 Yannick Vignon
  2021-11-24  4:07 ` Jakub Kicinski
  0 siblings, 1 reply; 5+ messages in thread
From: Yannick Vignon @ 2021-11-23 18:54 UTC (permalink / raw)
  To: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S. Miller, Jakub Kicinski, Maxime Coquelin, netdev,
	Xiaoliang Yang, Kurt Kanzenbach, Vladimir Oltean, Ong Boon Leong,
	Joakim Zhang, sebastien.laveze
  Cc: Yannick Vignon

From: Yannick Vignon <yannick.vignon@nxp.com>

The Tx queues were not disabled in cases 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 loading
an XDP program:

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: 78cb988d36b6 ("net: stmmac: Add initial XDP support")
Signed-off-by: Yannick Vignon <yannick.vignon@nxp.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index f12097c8a485..748195697e5a 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3802,6 +3802,8 @@ int stmmac_release(struct net_device *dev)
 	struct stmmac_priv *priv = netdev_priv(dev);
 	u32 chan;
 
+	netif_tx_disable(dev);
+
 	if (device_may_wakeup(priv->device))
 		phylink_speed_down(priv->phylink, false);
 	/* Stop and disconnect the PHY */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: stmmac: Disable Tx queues when reconfiguring the interface
  2021-11-23 18:54 [PATCH net] net: stmmac: Disable Tx queues when reconfiguring the interface Yannick Vignon
@ 2021-11-24  4:07 ` Jakub Kicinski
  2021-11-24 10:06   ` Vladimir Oltean
  0 siblings, 1 reply; 5+ messages in thread
From: Jakub Kicinski @ 2021-11-24  4:07 UTC (permalink / raw)
  To: Yannick Vignon
  Cc: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S. Miller, Maxime Coquelin, netdev, Xiaoliang Yang,
	Kurt Kanzenbach, Vladimir Oltean, Ong Boon Leong, Joakim Zhang,
	sebastien.laveze, Yannick Vignon

On Tue, 23 Nov 2021 19:54:48 +0100 Yannick Vignon wrote:
> From: Yannick Vignon <yannick.vignon@nxp.com>
> 
> The Tx queues were not disabled in cases 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 loading
> an XDP program:
> 
> 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: 78cb988d36b6 ("net: stmmac: Add initial XDP support")
> Signed-off-by: Yannick Vignon <yannick.vignon@nxp.com>

Fixes tag: Fixes: 78cb988d36b6 ("net: stmmac: Add initial XDP support")
Has these problem(s):
	- Target SHA1 does not exist

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: stmmac: Disable Tx queues when reconfiguring the interface
  2021-11-24  4:07 ` Jakub Kicinski
@ 2021-11-24 10:06   ` Vladimir Oltean
  2021-11-24 12:10     ` Yannick Vignon
  0 siblings, 1 reply; 5+ messages in thread
From: Vladimir Oltean @ 2021-11-24 10:06 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: Yannick Vignon (OSS),
	Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S. Miller, Maxime Coquelin, netdev, Xiaoliang Yang,
	Kurt Kanzenbach, Ong Boon Leong, Joakim Zhang,
	Sebastien Laveze (OSS),
	Yannick Vignon

On Tue, Nov 23, 2021 at 08:07:51PM -0800, Jakub Kicinski wrote:
> On Tue, 23 Nov 2021 19:54:48 +0100 Yannick Vignon wrote:
> > From: Yannick Vignon <yannick.vignon@nxp.com>
> > 
> > The Tx queues were not disabled in cases 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 loading
> > an XDP program:
> > 
> > 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: 78cb988d36b6 ("net: stmmac: Add initial XDP support")
> > Signed-off-by: Yannick Vignon <yannick.vignon@nxp.com>
> 
> Fixes tag: Fixes: 78cb988d36b6 ("net: stmmac: Add initial XDP support")
> Has these problem(s):
> 	- Target SHA1 does not exist

You caught him backporting! Although I agree, things sent to the "net"
tree should also be tested against the "net" tree.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: stmmac: Disable Tx queues when reconfiguring the interface
  2021-11-24 10:06   ` Vladimir Oltean
@ 2021-11-24 12:10     ` Yannick Vignon
  2021-11-24 12:39       ` Vladimir Oltean
  0 siblings, 1 reply; 5+ messages in thread
From: Yannick Vignon @ 2021-11-24 12:10 UTC (permalink / raw)
  To: Vladimir Oltean, Jakub Kicinski
  Cc: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S. Miller, Maxime Coquelin, netdev, Xiaoliang Yang,
	Kurt Kanzenbach, Ong Boon Leong, Joakim Zhang,
	Sebastien Laveze (OSS),
	Yannick Vignon

On 11/24/2021 11:06 AM, Vladimir Oltean wrote:
> On Tue, Nov 23, 2021 at 08:07:51PM -0800, Jakub Kicinski wrote:
>> On Tue, 23 Nov 2021 19:54:48 +0100 Yannick Vignon wrote:
>>> From: Yannick Vignon <yannick.vignon@nxp.com>
>>>
>>> The Tx queues were not disabled in cases 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 loading
>>> an XDP program:
>>>
>>> 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: 78cb988d36b6 ("net: stmmac: Add initial XDP support")
>>> Signed-off-by: Yannick Vignon <yannick.vignon@nxp.com>
>>
>> Fixes tag: Fixes: 78cb988d36b6 ("net: stmmac: Add initial XDP support")
>> Has these problem(s):
>> 	- Target SHA1 does not exist
> 
> You caught him backporting! Although I agree, things sent to the "net"
> tree should also be tested against the "net" tree.
> 

That would be more like forward-porting in this case, since I first 
fixed the issue on an older 5.10 kernel :)
And yes, I did reproduce the bug and confirm the fix on the tip of the 
netdev branch yesterday before sending the patch. But I guess I looked 
at the wrong branch when adding the Fixes tag...

Will post a V2 to fix the Fixes tag.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: stmmac: Disable Tx queues when reconfiguring the interface
  2021-11-24 12:10     ` Yannick Vignon
@ 2021-11-24 12:39       ` Vladimir Oltean
  0 siblings, 0 replies; 5+ messages in thread
From: Vladimir Oltean @ 2021-11-24 12:39 UTC (permalink / raw)
  To: Yannick Vignon (OSS)
  Cc: Jakub Kicinski, Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S. Miller, Maxime Coquelin, netdev, Xiaoliang Yang,
	Kurt Kanzenbach, Ong Boon Leong, Joakim Zhang,
	Sebastien Laveze (OSS),
	Yannick Vignon

On Wed, Nov 24, 2021 at 01:10:55PM +0100, Yannick Vignon wrote:
> On 11/24/2021 11:06 AM, Vladimir Oltean wrote:
> > On Tue, Nov 23, 2021 at 08:07:51PM -0800, Jakub Kicinski wrote:
> > > On Tue, 23 Nov 2021 19:54:48 +0100 Yannick Vignon wrote:
> > > > From: Yannick Vignon <yannick.vignon@nxp.com>
> > > > 
> > > > The Tx queues were not disabled in cases 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 loading
> > > > an XDP program:
> > > > 
> > > > 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: 78cb988d36b6 ("net: stmmac: Add initial XDP support")
> > > > Signed-off-by: Yannick Vignon <yannick.vignon@nxp.com>
> > > 
> > > Fixes tag: Fixes: 78cb988d36b6 ("net: stmmac: Add initial XDP support")
> > > Has these problem(s):
> > > 	- Target SHA1 does not exist
> > 
> > You caught him backporting! Although I agree, things sent to the "net"
> > tree should also be tested against the "net" tree.
> > 
> 
> That would be more like forward-porting in this case, since I first fixed
> the issue on an older 5.10 kernel :)

XDP for stmmac isn't in v5.10, so backporting is what it is.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-11-24 12:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-23 18:54 [PATCH net] net: stmmac: Disable Tx queues when reconfiguring the interface Yannick Vignon
2021-11-24  4:07 ` Jakub Kicinski
2021-11-24 10:06   ` Vladimir Oltean
2021-11-24 12:10     ` Yannick Vignon
2021-11-24 12:39       ` Vladimir Oltean

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.