Author: hselasky
Date: Sun Jan 11 12:19:49 2015
New Revision: 276970
URL: https://svnweb.freebsd.org/changeset/base/276970

Log:
  MFC r276532 and r276626:
  The "cnputs_mtx" mutex must be allowed to recurse. Debug prints and/or
  witness printouts in the console driver clients can cause this mutex
  to recurse by calls to "printf()" from witness for example. In
  particular this can happen if "debug.witness.skipspin=0" is set in the
  boot environment.

Modified:
  stable/9/sys/kern/kern_cons.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/kern_cons.c
==============================================================================
--- stable/9/sys/kern/kern_cons.c       Sun Jan 11 12:17:27 2015        
(r276969)
+++ stable/9/sys/kern/kern_cons.c       Sun Jan 11 12:19:49 2015        
(r276970)
@@ -497,6 +497,13 @@ cnputs(char *p)
        int unlock_reqd = 0;
 
        if (use_cnputs_mtx) {
+               /*
+                * NOTE: Debug prints and/or witness printouts in
+                * console driver clients can cause the "cnputs_mtx"
+                * mutex to recurse. Simply return if that happens.
+                */
+               if (mtx_owned(&cnputs_mtx))
+                       return;
                mtx_lock_spin(&cnputs_mtx);
                unlock_reqd = 1;
        }
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to