net: b44: set pause params only when interface is up
PATCH v2 1/1 net: b44: set pause params only when interface is up
Hi,
This patch fixes a kernel panic when using netifd. Could you please apply it also to linux-5.15.y at least?
TIA and kind regards,
Signature · 1 line
Peter
b44_free_rings() accesses b44::rx_buffers (and ::tx_buffers) unconditionally, but b44::rx_buffers is only valid when the device is up (they get allocated in b44_open(), and deallocated again in b44_close()), any other time these is just a NULL pointers.
So if you try to change the pause params while the network interface is disabled/administratively down, everything explodes (which likely netifd tries to do).
--- drivers/net/ethernet/broadcom/b44.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
drivers/net/ethernet/broadcom/b44.c +8 -6
@@ -2009,12 +2009,14 @@ static int b44_set_pauseparam(struct net_device *dev, bp->flags |=B44_FLAG_TX_PAUSE ; else bp->flags &= ~B44_FLAG_TX_PAUSE; -if (bp->flags &B44_FLAG_PAUSE_AUTO ) { -b44_halt (bp); -b44_init_rings (bp); -b44_init_hw (bp,B44_FULL_RESET ); - }else { -__b44_set_flow_ctrl (bp, bp->flags); +if (netif_running (dev)) { +if (bp->flags &B44_FLAG_PAUSE_AUTO ) { +b44_halt (bp); +b44_init_rings (bp); +b44_init_hw (bp,B44_FULL_RESET ); + }else { +__b44_set_flow_ctrl (bp, bp->flags); + } }spin_unlock_irq (&bp->lock);
Signature · 1 line
2.35.3
Quoted 8 lines · Peter Münster
Hi,
This patch fixes a kernel panic when using netifd. Could you please apply it also to linux-5.15.y at least?
TIA and kind regards,
Signature · 1 line
Peter
Hi Peter
This is better, but still has some process issues.
Quoted 11 lines
b44_free_rings()accessesb44::rx_buffers(and ::tx_buffers) unconditionally, butb44::rx_buffersis only valid when the device is up (they get allocated inb44_open(), and deallocated again inb44_close()), any other time these is just a NULL pointers.So if you try to change the pause params while the network interface is disabled/administratively down, everything explodes (which likely netifd tries to do).
Fixes 1da177e4c3f4 (Linux-2.6.12-rc2)
needs to go here. Your patch will first get applied to the next -rc release. Once it is published there, any patches with this tag are automatically added to the list for backporting to stable. That will include all long term stable branches, so there is no need to request specifically linux-5.15.
There is some documentation about this here:
https://www.kernel.org/doc/Documentation/process/stable-kernel-rules.rst
Quoted 6 lines
Reported-by Peter Münster <[email protected]>Suggested-by Jonas Gorski <[email protected]>Signed-off-by Vaclav Svoboda <[email protected]>Tested-by Peter Münster <[email protected]>Signed-off-by Peter Münster <[email protected]>---
Anything above the --- gets merged as the commit message. Anything below it and the patch proper gets discarded. This is where you can add comments for Maintainers etc. For this patch, you don't actually need any such comments.
I often say to mainline newbies: The code is easy, the hard bit is the processes.
Andrew