svn commit: r186468 - head/sys/netinet6

Kip Macy kmacy at FreeBSD.org
Wed Dec 24 01:08:19 UTC 2008


Author: kmacy
Date: Wed Dec 24 01:08:18 2008
New Revision: 186468
URL: http://svn.freebsd.org/changeset/base/186468

Log:
  avoid lock recursion by deferring the link check until after LLE lock is dropped

Modified:
  head/sys/netinet6/nd6_nbr.c

Modified: head/sys/netinet6/nd6_nbr.c
==============================================================================
--- head/sys/netinet6/nd6_nbr.c	Wed Dec 24 01:00:30 2008	(r186467)
+++ head/sys/netinet6/nd6_nbr.c	Wed Dec 24 01:08:18 2008	(r186468)
@@ -603,6 +603,7 @@ nd6_na_input(struct mbuf *m, int off, in
 	int is_override;
 	char *lladdr = NULL;
 	int lladdrlen = 0;
+	int checklink = 0;
 	struct ifaddr *ifa;
 	struct llentry *ln = NULL;
 	union nd_opts ndopts;
@@ -739,7 +740,7 @@ nd6_na_input(struct mbuf *m, int off, in
 			 * non-reachable to probably reachable, and might
 			 * affect the status of associated prefixes..
 			 */
-			pfxlist_onlink_check();
+			checklink = 1;
 		}
 	} else {
 		int llchange;
@@ -886,6 +887,9 @@ nd6_na_input(struct mbuf *m, int off, in
 		if (chain)
 			nd6_output_flush(ifp, ifp, chain, &sin6, NULL);
 	}
+	if (checklink)
+		pfxlist_onlink_check();
+
 	m_freem(m);
 	return;
 


More information about the svn-src-all mailing list