svn commit: r294757 - head/sys/kern

Mark Johnston markj at FreeBSD.org
Tue Jan 26 01:15:20 UTC 2016


Author: markj
Date: Tue Jan 26 01:15:18 2016
New Revision: 294757
URL: https://svnweb.freebsd.org/changeset/base/294757

Log:
  Evaluate the sysctl_running fail point before taking the sysctl lock.
  
  The fail point handler may sleep, but this is not permitted while holding a
  rm read lock.
  
  MFC after:	1 week
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  head/sys/kern/kern_sysctl.c

Modified: head/sys/kern/kern_sysctl.c
==============================================================================
--- head/sys/kern/kern_sysctl.c	Tue Jan 26 01:02:19 2016	(r294756)
+++ head/sys/kern/kern_sysctl.c	Tue Jan 26 01:15:18 2016	(r294757)
@@ -166,6 +166,8 @@ sysctl_root_handler_locked(struct sysctl
 	if (!(oid->oid_kind & CTLFLAG_MPSAFE))
 		mtx_unlock(&Giant);
 
+	KFAIL_POINT_ERROR(_debug_fail_point, sysctl_running, error);
+
 	if (tracker != NULL)
 		SYSCTL_RLOCK(tracker);
 	else
@@ -1838,8 +1840,6 @@ sysctl_root(SYSCTL_HANDLER_ARGS)
 #endif
 	error = sysctl_root_handler_locked(oid, arg1, arg2, req, &tracker);
 
-	KFAIL_POINT_ERROR(_debug_fail_point, sysctl_running, error);
-
 out:
 	SYSCTL_RUNLOCK(&tracker);
 	return (error);


More information about the svn-src-all mailing list