|
@@ -438,13 +438,15 @@ static int fib_detect_death(struct fib_info *fi, int order,
|
|
if (n) {
|
|
if (n) {
|
|
state = n->nud_state;
|
|
state = n->nud_state;
|
|
neigh_release(n);
|
|
neigh_release(n);
|
|
|
|
+ } else {
|
|
|
|
+ return 0;
|
|
}
|
|
}
|
|
if (state == NUD_REACHABLE)
|
|
if (state == NUD_REACHABLE)
|
|
return 0;
|
|
return 0;
|
|
if ((state & NUD_VALID) && order != dflt)
|
|
if ((state & NUD_VALID) && order != dflt)
|
|
return 0;
|
|
return 0;
|
|
if ((state & NUD_VALID) ||
|
|
if ((state & NUD_VALID) ||
|
|
- (*last_idx < 0 && order > dflt)) {
|
|
|
|
|
|
+ (*last_idx < 0 && order > dflt && state != NUD_INCOMPLETE)) {
|
|
*last_resort = fi;
|
|
*last_resort = fi;
|
|
*last_idx = order;
|
|
*last_idx = order;
|
|
}
|
|
}
|