svn commit: r188113 - head/sys/netinet6

Bjoern A. Zeeb bz at FreeBSD.org
Wed Feb 4 02:35:29 PST 2009


Author: bz
Date: Wed Feb  4 10:35:27 2009
New Revision: 188113
URL: http://svn.freebsd.org/changeset/base/188113

Log:
  When iterating through the list trying to find a router in
  defrouter_select(), NULL the cached llentry after unlocking
  as we are no longer interested in it and with the second
  iteration would try to unlock it again resulting in
  panic: Lock (rw) lle not locked @ ...
  
  Reported by:	Mark Atkinson <m.atkinson at f5.com>
  Tested by:	Mark Atkinson <m.atkinson at f5.com>
  PR:		kern/128247 (in follow-up, unrelated to original report)

Modified:
  head/sys/netinet6/nd6_rtr.c

Modified: head/sys/netinet6/nd6_rtr.c
==============================================================================
--- head/sys/netinet6/nd6_rtr.c	Wed Feb  4 01:14:06 2009	(r188112)
+++ head/sys/netinet6/nd6_rtr.c	Wed Feb  4 10:35:27 2009	(r188113)
@@ -651,8 +651,10 @@ defrouter_select(void)
 			selected_dr = dr;
 		}
 		IF_AFDATA_UNLOCK(dr->ifp);
-		if (ln != NULL)
+		if (ln != NULL) {
 			LLE_RUNLOCK(ln);
+			ln = NULL;
+		}
 
 		if (dr->installed && installed_dr == NULL)
 			installed_dr = dr;


More information about the svn-src-head mailing list