There is a potential jiffy wraparound bug in the transmit watchdog
that is easily avoided by using time_after().

Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]>


--- linux-2.6.orig/net/sched/sch_generic.c
+++ linux-2.6/net/sched/sch_generic.c
@@ -193,8 +193,10 @@ static void dev_watchdog(unsigned long a
                    netif_running(dev) &&
                    netif_carrier_ok(dev)) {
                        if (netif_queue_stopped(dev) &&
-                           (jiffies - dev->trans_start) > dev->watchdog_timeo) 
{
-                               printk(KERN_INFO "NETDEV WATCHDOG: %s: transmit 
timed out\n", dev->name);
+                           time_after(jiffies, dev->trans_start + 
dev->watchdog_timeo)) {
+
+                               printk(KERN_INFO "NETDEV WATCHDOG: %s: transmit 
timed out\n",
+                                      dev->name);
                                dev->tx_timeout(dev);
                        }
                        if (!mod_timer(&dev->watchdog_timer, jiffies + 
dev->watchdog_timeo))
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to