diff --git a/net/core/neighbour.c b/net/core/neighbour.c index cf26e04c4046ded822a1e449e5a6c036ca2af38e..2ae929f9bd06f3be98cbd1add881641a0df1d7a4 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -1148,7 +1148,8 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, } else goto out; } else { - if (lladdr == neigh->ha && new == NUD_STALE) + if (lladdr == neigh->ha && new == NUD_STALE && + !(flags & NEIGH_UPDATE_F_ADMIN)) new = old; } }