[PATCH] bug in ARP override timer near jiffies wrap

STALE8161d

4 messages, 2 authors, 2004-05-07 · open the first message on its own page

[PATCH] bug in ARP override timer near jiffies wrap

From: David Stevens <hidden>
Date: 2004-05-07 20:01:10

This patch fixes the calculation of "override" in ARP.

                                +-DLS
--- linux-2.6.6-rc2F1/net/ipv4/arp.c    2004-04-21 15:47:55.000000000 
-0700
+++ linux-2.6.6-rc2F2/net/ipv4/arp.c    2004-05-07 12:54:34.898406424 
-0700
@@ -891,15 +891,14 @@
 
        if (n) {
                int state = NUD_REACHABLE;
-               int override = 0;
+               int override;
 
                /* If several different ARP replies follows back-to-back,
                   use the FIRST one. It is possible, if several proxy
                   agents are active. Taking the first reply prevents
                   arp trashing and chooses the fastest router.
                 */
-               if (jiffies - n->updated >= n->parms->locktime)
-                       override = 1;
+               override = time_after(jiffies, n->updated + 
n->parms->locktime);
 
                /* Broadcast replies and request packets
                   do not assert neighbour reachability.

Re: [PATCH] bug in ARP override timer near jiffies wrap

From: David S. Miller <hidden>
Date: 2004-05-07 21:40:00

On Fri, 7 May 2004 14:01:10 -0600
David Stevens [off-list ref] wrote:
This patch fixes the calculation of "override" in ARP.
 ...
-               if (jiffies - n->updated >= n->parms->locktime)
-                       override = 1;
+               override = time_after(jiffies, n->updated + 
n->parms->locktime);
David, do you realize that the existing formula is not only
correct, but also covers a greater time space than the
time_*() mechanisms do?

Re: [PATCH] bug in ARP override timer near jiffies wrap

From: David Stevens <hidden>
Date: 2004-05-07 21:51:13

David S. Miller wrote on 05/07/2004 02:40:00 PM:
David, do you realize that the existing formula is not only
correct, but also covers a greater time space than the
time_*() mechanisms do?
ARG! you're right, of course-- I noticed only that they are
different and didn't think about it actually be right! :-)

                                +-DLS

Re: [PATCH] bug in ARP override timer near jiffies wrap

From: David S. Miller <hidden>
Date: 2004-05-07 21:55:01

On Fri, 7 May 2004 14:51:13 -0700
David Stevens [off-list ref] wrote:
David S. Miller wrote on 05/07/2004 02:40:00 PM:
quoted
David, do you realize that the existing formula is not only
correct, but also covers a greater time space than the
time_*() mechanisms do?
ARG! you're right, of course-- I noticed only that they are
different and didn't think about it actually be right! :-)
But note that the main point is also that your change is
still correct.

The only reason I know about the time space issue with these
tests is that Alexey mentioned it to me when I was converting
most of the TCP code over to use the time_*() macros.

It is a policy decision whether it is more valuable to be
more consistent or support the larger time space in tests
here and there.

I think it is more important to be consistent, so I'm going
to apply your patch.  And for ARP the larger time space would
never matter anyways :-)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help