Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Dec 2008 01:08:19 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r186468 - head/sys/netinet6
Message-ID:  <200812240108.mBO18Jkw018495@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812240108.mBO18Jkw018495>