Patch "net: don't dump stack on queue timeout" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: don't dump stack on queue timeout

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-don-t-dump-stack-on-queue-timeout.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 9050e32287fadb46d1f8a3ef03b614aec512aefa
Author: Jakub Kicinski <kuba@xxxxxxxxxx>
Date:   Tue Nov 14 00:11:42 2023 -0500

    net: don't dump stack on queue timeout
    
    [ Upstream commit e316dd1cf1358ff9c44b37c7be273a7dc4349986 ]
    
    The top syzbot report for networking (#14 for the entire kernel)
    is the queue timeout splat. We kept it around for a long time,
    because in real life it provides pretty strong signal that
    something is wrong with the driver or the device.
    
    Removing it is also likely to break monitoring for those who
    track it as a kernel warning.
    
    Nevertheless, WARN()ings are best suited for catching kernel
    programming bugs. If a Tx queue gets starved due to a pause
    storm, priority configuration, or other weirdness - that's
    obviously a problem, but not a problem we can fix at
    the kernel level.
    
    Bite the bullet and convert the WARN() to a print.
    
    Before:
    
      NETDEV WATCHDOG: eni1np1 (netdevsim): transmit queue 0 timed out 1975 ms
      WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:525 dev_watchdog+0x39e/0x3b0
      [... completely pointless stack trace of a timer follows ...]
    
    Now:
    
      netdevsim netdevsim1 eni1np1: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 1769 ms
    
    Alternatively we could mark the drivers which syzbot has
    learned to abuse as "print-instead-of-WARN" selectively.
    
    Reported-by: syzbot+d55372214aff0faa1f1f@xxxxxxxxxxxxxxxxxxxxxxxxx
    Reviewed-by: Jiri Pirko <jiri@xxxxxxxxxx>
    Reviewed-by: Eric Dumazet <edumazet@xxxxxxxxxx>
    Reviewed-by: Jamal Hadi Salim <jhs@xxxxxxxxxxxx>
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 4023c955036b1..6ab9359c1706f 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -522,8 +522,9 @@ static void dev_watchdog(struct timer_list *t)
 
 			if (unlikely(timedout_ms)) {
 				trace_net_dev_xmit_timeout(dev, i);
-				WARN_ONCE(1, "NETDEV WATCHDOG: %s (%s): transmit queue %u timed out %u ms\n",
-					  dev->name, netdev_drivername(dev), i, timedout_ms);
+				netdev_crit(dev, "NETDEV WATCHDOG: CPU: %d: transmit queue %u timed out %u ms\n",
+					    raw_smp_processor_id(),
+					    i, timedout_ms);
 				netif_freeze_queues(dev);
 				dev->netdev_ops->ndo_tx_timeout(dev, i);
 				netif_unfreeze_queues(dev);




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux