Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 May 2009 18:30:18 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r192826 - user/kmacy/releng_7_2_fcs/sys/dev/hwpmc
Message-ID:  <200905261830.n4QIUIXK068308@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Tue May 26 18:30:17 2009
New Revision: 192826
URL: http://svn.freebsd.org/changeset/base/192826

Log:
  fix inconsistent locking state
  
  (partly) pointed out by: attilio@

Modified:
  user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_logging.c

Modified: user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_logging.c
==============================================================================
--- user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_logging.c	Tue May 26 17:57:37 2009	(r192825)
+++ user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_logging.c	Tue May 26 18:30:17 2009	(r192826)
@@ -269,10 +269,8 @@ pmclog_loop(void *arg)
 	mtx_lock_spin(&po->po_mtx);
 	for (;;) {
 		/* check if we've been asked to exit */
-		if ((po->po_flags & PMC_PO_OWNS_LOGFILE) == 0) {
-			mtx_unlock_spin(&po->po_mtx);
+		if ((po->po_flags & PMC_PO_OWNS_LOGFILE) == 0)
 			break;
-		}
 		
 		if (lb == NULL) { /* look for a fresh buffer to write */
 			if ((lb = TAILQ_FIRST(&po->po_logbuffers)) == NULL) {
@@ -324,7 +322,7 @@ pmclog_loop(void *arg)
 			po->po_error = error; /* save for flush log */
 
 			PMCDBG(LOG,WRI,2, "po=%p error=%d", po, error);
-
+			mtx_lock_spin(&po->po_mtx);
 			break;
 		}
 
@@ -337,7 +335,6 @@ pmclog_loop(void *arg)
 		lb = NULL;
 		mtx_lock_spin(&po->po_mtx);
 	}
-	mtx_lock_spin(&po->po_mtx);
 	po->po_kthread = NULL;
 	cv_signal(&po->po_kthread_cv);
 	mtx_unlock_spin(&po->po_mtx);
@@ -585,7 +582,7 @@ pmclog_configure_log(struct pmc_mdep *md
 	mtx_lock_spin(&po->po_mtx);
 	if (po->po_kthread)
 		pmclog_stop_kthread(po);
-	mtx_lock_spin(&po->po_mtx);
+	mtx_unlock_spin(&po->po_mtx);
 
 	KASSERT(po->po_kthread == NULL, ("[pmc,%d] po=%p kthread not stopped",
 	    __LINE__, po));



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