svn commit: r287196 - head/sys/kern

Julien Charbon jch at FreeBSD.org
Thu Aug 27 08:15:33 UTC 2015


Author: jch
Date: Thu Aug 27 08:15:32 2015
New Revision: 287196
URL: https://svnweb.freebsd.org/changeset/base/287196

Log:
  In callout_stop(), if a callout is both pending and currently
  being serviced return 0 (fail) but it is applicable only
  mpsafe callouts.  Thanks to hselasky for finding this.
  
  Differential Revision:	https://reviews.freebsd.org/D3078 (Updated)
  Submitted by:		hselasky
  Reviewed by:		jch

Modified:
  head/sys/kern/kern_timeout.c

Modified: head/sys/kern/kern_timeout.c
==============================================================================
--- head/sys/kern/kern_timeout.c	Thu Aug 27 07:53:58 2015	(r287195)
+++ head/sys/kern/kern_timeout.c	Thu Aug 27 08:15:32 2015	(r287196)
@@ -1379,11 +1379,13 @@ again:
 	}
 	callout_cc_del(c, cc);
 
-	/*
-	 * If we are asked to stop a callout which is currently in progress
-	 * and indeed impossible to stop then return 0.
-	 */
-	not_running = !(cc_exec_curr(cc, direct) == c);
+	if (!use_lock) {
+		/*
+		 * If we are asked to stop a callout which is currently in progress
+		 * and indeed impossible to stop then return 0.
+		 */
+		not_running = !(cc_exec_curr(cc, direct) == c);
+	}
 
 	CC_UNLOCK(cc);
 	return (not_running);


More information about the svn-src-head mailing list