@@ -802,15 +802,18 @@
if (time_before(n->used, n->confirmed))
n->used = n->confirmed;
- if (atomic_read(&n->refcnt) == 1 &&
- (state == NUD_FAILED ||
- time_after(jiffies, n->used + n->parms->gc_staletime))) {
- *np = n->next;
- n->dead = 1;
- write_unlock(&n->lock);
- neigh_cleanup_and_release(n);
- continue;
+ if (state == NUD_FAILED ||
+ time_after(jiffies, n->used + n->parms->gc_staletime)) {
+ if (atomic_read(&n->refcnt) == 1) {
+ *np = n->next;
+ n->dead = 1;
+ write_unlock(&n->lock);
+ neigh_cleanup_and_release(n);
+ continue;
+ } else if (state == NUD_FAILED)
+ n->nud_state = NUD_NONE;
}
write_unlock(&n->lock);
next_elt:
--
To unsubscribe from this list: send the line "unsubscribe netdev" in