diff options
author | gnn <gnn@FreeBSD.org> | 2011-01-07 18:14:58 +0000 |
---|---|---|
committer | gnn <gnn@FreeBSD.org> | 2011-01-07 18:14:58 +0000 |
commit | fe42eae980da8a67abbd7af0cfc39159121b570d (patch) | |
tree | 4e0313d56be99b0b6c2ed8ebb775b6b92d2769f2 /sys/netinet | |
parent | 05673f05f2e8ddf39a45333b287d066a9cd022e1 (diff) | |
download | FreeBSD-src-fe42eae980da8a67abbd7af0cfc39159121b570d.zip FreeBSD-src-fe42eae980da8a67abbd7af0cfc39159121b570d.tar.gz |
Adjust ARP hold queue locking.
Submitted by: Rozhuk Ivan, jhb
MFC after: 2 weeks
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/if_ether.c | 5 |
1 files changed, 3 insertions, 2 deletions
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) |