The functions time_before, time_before_eq, time_after, and time_after_eq are 
more robust for comparing jiffies against other values.

So following patch implements usage of the time_after() macro, defined at 
linux/jiffies.h, which deals with wrapping correctly

Cc: [EMAIL PROTECTED]
Signed-off-by: S.Çağlar Onur <[EMAIL PROTECTED]>
---
 drivers/net/arcnet/arcnet.c |    4 ++--
 include/linux/arcdevice.h   |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/arcnet/arcnet.c b/drivers/net/arcnet/arcnet.c
index c59c806..c298615 100644
--- a/drivers/net/arcnet/arcnet.c
+++ b/drivers/net/arcnet/arcnet.c
@@ -940,7 +940,7 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id)
 
                        /* is the RECON info empty or old? */
                        if (!lp->first_recon || !lp->last_recon ||
-                           jiffies - lp->last_recon > HZ * 10) {
+                           time_after(jiffies, lp->last_recon + HZ * 10)) {
                                if (lp->network_down)
                                        BUGMSG(D_NORMAL, "reconfiguration 
detected: cabling restored?\n");
                                lp->first_recon = lp->last_recon = jiffies;
@@ -974,7 +974,7 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id)
                                        lp->num_recons = 1;
                                }
                        }
-               } else if (lp->network_down && jiffies - lp->last_recon > HZ * 
10) {
+               } else if (lp->network_down && time_after(jiffies, 
lp->last_recon + HZ * 10)) {
                        if (lp->network_down)
                                BUGMSG(D_NORMAL, "cabling restored?\n");
                        lp->first_recon = lp->last_recon = 0;
diff --git a/include/linux/arcdevice.h b/include/linux/arcdevice.h
index fde6758..537d661 100644
--- a/include/linux/arcdevice.h
+++ b/include/linux/arcdevice.h
@@ -283,7 +284,7 @@ struct arcnet_local {
        int next_buf, first_free_buf;
 
        /* network "reconfiguration" handling */
-       time_t first_recon,     /* time of "first" RECON message to count */
+       unsigned long first_recon,      /* time of "first" RECON message to 
count */
                last_recon;     /* time of most recent RECON */
        int num_recons;         /* number of RECONs between first and last. */
        bool network_down;      /* do we think the network is down? */
-- 
1.5.3.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to