svn commit: r290530 - in head/sys: fs/procfs kern sys

Mark Johnston markj at FreeBSD.org
Sun Nov 8 01:38:58 UTC 2015


Author: markj
Date: Sun Nov  8 01:38:56 2015
New Revision: 290530
URL: https://svnweb.freebsd.org/changeset/base/290530

Log:
  - Consistently use PROC_ASSERT_HELD() to verify that a process' hold count
    is non-zero.
  - Include the process address in the PROC_ASSERT_HELD() and
    PROC_ASSERT_NOT_HELD() assertion messages so that the corresponding
    process can be found easily when debugging.
  
  MFC after:	1 week

Modified:
  head/sys/fs/procfs/procfs_dbregs.c
  head/sys/fs/procfs/procfs_fpregs.c
  head/sys/kern/sys_process.c
  head/sys/sys/proc.h

Modified: head/sys/fs/procfs/procfs_dbregs.c
==============================================================================
--- head/sys/fs/procfs/procfs_dbregs.c	Sun Nov  8 01:36:18 2015	(r290529)
+++ head/sys/fs/procfs/procfs_dbregs.c	Sun Nov  8 01:38:56 2015	(r290530)
@@ -98,7 +98,7 @@ procfs_doprocdbregs(PFS_FILL_ARGS)
 		return (0);
 
 	PROC_LOCK(p);
-	KASSERT(p->p_lock > 0, ("proc not held"));
+	PROC_ASSERT_HELD(p);
 	if (p_candebug(td, p) != 0) {
 		PROC_UNLOCK(p);
 		return (EPERM);

Modified: head/sys/fs/procfs/procfs_fpregs.c
==============================================================================
--- head/sys/fs/procfs/procfs_fpregs.c	Sun Nov  8 01:36:18 2015	(r290529)
+++ head/sys/fs/procfs/procfs_fpregs.c	Sun Nov  8 01:38:56 2015	(r290530)
@@ -92,7 +92,7 @@ procfs_doprocfpregs(PFS_FILL_ARGS)
 		return (0);
 
 	PROC_LOCK(p);
-	KASSERT(p->p_lock > 0, ("proc not held"));
+	PROC_ASSERT_HELD(p);
 	if (p_candebug(td, p)) {
 		PROC_UNLOCK(p);
 		return (EPERM);

Modified: head/sys/kern/sys_process.c
==============================================================================
--- head/sys/kern/sys_process.c	Sun Nov  8 01:36:18 2015	(r290529)
+++ head/sys/kern/sys_process.c	Sun Nov  8 01:38:56 2015	(r290530)
@@ -251,8 +251,7 @@ proc_rwmem(struct proc *p, struct uio *u
 	 * curthread but we can't assert that.)  This keeps the process
 	 * from exiting out from under us until this operation completes.
 	 */
-	KASSERT(p->p_lock >= 1, ("%s: process %p (pid %d) not held", __func__,
-	    p, p->p_pid));
+	PROC_ASSERT_HELD(p);
 
 	/*
 	 * The map we want...

Modified: head/sys/sys/proc.h
==============================================================================
--- head/sys/sys/proc.h	Sun Nov  8 01:36:18 2015	(r290529)
+++ head/sys/sys/proc.h	Sun Nov  8 01:38:56 2015	(r290530)
@@ -824,13 +824,13 @@ extern pid_t pid_max;
 #define	_PHOLD(p) do {							\
 	PROC_LOCK_ASSERT((p), MA_OWNED);				\
 	KASSERT(!((p)->p_flag & P_WEXIT) || (p) == curproc,		\
-	    ("PHOLD of exiting process"));				\
+	    ("PHOLD of exiting process %p", p));			\
 	(p)->p_lock++;							\
 	if (((p)->p_flag & P_INMEM) == 0)				\
 		faultin((p));						\
 } while (0)
-#define PROC_ASSERT_HELD(p) do {					\
-	KASSERT((p)->p_lock > 0, ("process not held"));			\
+#define	PROC_ASSERT_HELD(p) do {					\
+	KASSERT((p)->p_lock > 0, ("process %p not held", p));		\
 } while (0)
 
 #define	PRELE(p) do {							\
@@ -845,8 +845,8 @@ extern pid_t pid_max;
 	if (((p)->p_flag & P_WEXIT) && (p)->p_lock == 0)		\
 		wakeup(&(p)->p_lock);					\
 } while (0)
-#define PROC_ASSERT_NOT_HELD(p) do {					\
-	KASSERT((p)->p_lock == 0, ("process held"));			\
+#define	PROC_ASSERT_NOT_HELD(p) do {					\
+	KASSERT((p)->p_lock == 0, ("process %p held", p));		\
 } while (0)
 
 #define	PROC_UPDATE_COW(p) do {						\


More information about the svn-src-head mailing list