Commit 96d10d5b authored by Hangbin Liu's avatar Hangbin Liu Committed by David S. Miller

neigh: fix ARP retransmit timer guard

In commit 19e16d22 ("neigh: support smaller retrans_time settting")
we add more accurate control for ARP and NS. But for ARP I forgot to
update the latest guard in neigh_timer_handler(), then the next
retransmit would be reset to jiffies + HZ/2 if we set the retrans_time
less than 500ms. Fix it by setting the time_before() check to HZ/100.

IPv6 does not have this issue.
Reported-by: default avatarJianwen Ji <jiji@redhat.com>
Fixes: 19e16d22 ("neigh: support smaller retrans_time settting")
Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f2b122d3
...@@ -1082,8 +1082,8 @@ static void neigh_timer_handler(struct timer_list *t) ...@@ -1082,8 +1082,8 @@ static void neigh_timer_handler(struct timer_list *t)
} }
if (neigh->nud_state & NUD_IN_TIMER) { if (neigh->nud_state & NUD_IN_TIMER) {
if (time_before(next, jiffies + HZ/2)) if (time_before(next, jiffies + HZ/100))
next = jiffies + HZ/2; next = jiffies + HZ/100;
if (!mod_timer(&neigh->timer, next)) if (!mod_timer(&neigh->timer, next))
neigh_hold(neigh); neigh_hold(neigh);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment