Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Jun 2013 15:55:31 +0000 (UTC)
From:      Ryan Stone <rstone@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r252342 - head/sys/kern
Message-ID:  <201306281555.r5SFtVOv006405@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rstone
Date: Fri Jun 28 15:55:30 2013
New Revision: 252342
URL: http://svnweb.freebsd.org/changeset/base/252342

Log:
  Correct a bug that prevented deadlkres from (almost) ever firing.
  
  deadlkres was using a reversed test to check whether ticks had rolled over.
  This meant that deadlkres could only fire after ticks had rolled over.
  This test was actually unnecessary as deadlkres only ever took the
  difference of ticks values which is safe even in the presence of ticks
  rollover.  Remove the tests entirely.  Now deadlkres will properly fire
  after a lock has been held after the timeout period.
  
  MFC after:	1 month

Modified:
  head/sys/kern/kern_clock.c

Modified: head/sys/kern/kern_clock.c
==============================================================================
--- head/sys/kern/kern_clock.c	Fri Jun 28 14:41:06 2013	(r252341)
+++ head/sys/kern/kern_clock.c	Fri Jun 28 15:55:30 2013	(r252342)
@@ -216,13 +216,8 @@ deadlkres(void)
 			}
 			FOREACH_THREAD_IN_PROC(p, td) {
 
-				/*
-				 * Once a thread is found in "interesting"
-				 * state a possible ticks wrap-up needs to be
-				 * checked.
-				 */
 				thread_lock(td);
-				if (TD_ON_LOCK(td) && ticks < td->td_blktick) {
+				if (TD_ON_LOCK(td)) {
 
 					/*
 					 * The thread should be blocked on a
@@ -247,8 +242,7 @@ deadlkres(void)
 						    __func__, td, tticks);
 					}
 				} else if (TD_IS_SLEEPING(td) &&
-				    TD_ON_SLEEPQ(td) &&
-				    ticks < td->td_blktick) {
+				    TD_ON_SLEEPQ(td)) {
 
 					/*
 					 * Check if the thread is sleeping on a



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