From fe42eae980da8a67abbd7af0cfc39159121b570d Mon Sep 17 00:00:00 2001 From: gnn Date: Fri, 7 Jan 2011 18:14:58 +0000 Subject: Adjust ARP hold queue locking. Submitted by: Rozhuk Ivan, jhb MFC after: 2 weeks --- sys/netinet/if_ether.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'sys/netinet/if_ether.c') diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c index df05c04..cecd785 100644 --- a/sys/netinet/if_ether.c +++ b/sys/netinet/if_ether.c @@ -731,6 +731,9 @@ match: if (la->la_hold != NULL) { struct mbuf *m_hold, *m_hold_next; + m_hold = la->la_hold; + la->la_hold = NULL; + la->la_numheld = 0; memcpy(&sa, L3_ADDR(la), sizeof(sa)); LLE_WUNLOCK(la); for (m_hold = la->la_hold, la->la_hold = NULL; @@ -741,8 +744,6 @@ match: } } else LLE_WUNLOCK(la); - la->la_hold = NULL; - la->la_numheld = 0; } /* end of FIB loop */ reply: if (op != ARPOP_REQUEST) -- cgit v1.1