neigh: fix state transition INCOMPLETE->FAILED via Netlink request
authorTimo Teras <timo.teras@iki.fi>
Thu, 11 Jun 2009 11:16:28 +0000 (04:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Jun 2009 11:16:28 +0000 (04:16 -0700)
commit5ef12d98a19254ee5dc851bd83e214b43ec1f725
tree703846f5298cca8f8a9f95712d47365e1de1df4a
parent2b85a34e911bf483c27cfdd124aeb1605145dc80
neigh: fix state transition INCOMPLETE->FAILED via Netlink request

The current code errors out the INCOMPLETE neigh entry skb queue only from
the timer if maximum probes have been attempted and there has been no reply.
This also causes the transtion to FAILED state.

However, the neigh entry can be also updated via Netlink to inform that the
address is unavailable.  Currently, neigh_update() just stops the timers and
leaves the pending skb's unreleased. This results that the clean up code in
the timer callback is never called, preventing also proper garbage collection.

This fixes neigh_update() to process the pending skb queue immediately if
INCOMPLETE -> FAILED state transtion occurs due to a Netlink request.

Signed-off-by: Timo Teras <timo.teras@iki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/neighbour.c