Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Mar 2018 15:11:54 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r331359 - head/sys/dev/syscons
Message-ID:  <201803221511.w2MFBsX4033828@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Thu Mar 22 15:11:53 2018
New Revision: 331359
URL: https://svnweb.freebsd.org/changeset/base/331359

Log:
  Revert r331298
  
  Normally, shutdown_nice() just signals init. However, sometimes it
  calls kern_reboot directly. For that case, r331298 dropped the Giant
  lock before calling it. This turns out to be incorrect for the more
  common case where init exists and we just signal it. Restore the old
  behavior. The direct call to kern_reboot() doesn't sync buffers to the
  disk, so should work with Giant held, so we don't need to drop locks
  here for that.
  
  Noticed by: bde@
  Sponsored by: Netflix

Modified:
  head/sys/dev/syscons/syscons.c

Modified: head/sys/dev/syscons/syscons.c
==============================================================================
--- head/sys/dev/syscons/syscons.c	Thu Mar 22 14:51:05 2018	(r331358)
+++ head/sys/dev/syscons/syscons.c	Thu Mar 22 15:11:53 2018	(r331359)
@@ -3858,28 +3858,22 @@ next_code:
 
 	    case RBT:
 #ifndef SC_DISABLE_REBOOT
-		if (enable_reboot && !(flags & SCGETC_CN)) {
-			mtx_unlock(&Giant);
+		if (enable_reboot && !(flags & SCGETC_CN))
 			shutdown_nice(0);
-		}
 #endif
 		break;
 
 	    case HALT:
 #ifndef SC_DISABLE_REBOOT
-		if (enable_reboot && !(flags & SCGETC_CN)) {
-			mtx_unlock(&Giant);
+		if (enable_reboot && !(flags & SCGETC_CN))
 			shutdown_nice(RB_HALT);
-		}
 #endif
 		break;
 
 	    case PDWN:
 #ifndef SC_DISABLE_REBOOT
-		if (enable_reboot && !(flags & SCGETC_CN)) {
-			mtx_unlock(&Giant);
+		if (enable_reboot && !(flags & SCGETC_CN))
 			shutdown_nice(RB_HALT|RB_POWEROFF);
-		}
 #endif
 		break;
 



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