Skip site navigation (1)Skip section navigation (2)
Date:      15 Oct 2004 11:00:05 -0000
From:      Luca Morettoni <morettoni@libero.it>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        phk@FreeBSD.org
Subject:   kern/72728: [patch] keyboard debug and reboot qualification moved into sysctl
Message-ID:  <20041015110005.1384.qmail@current.morettoni.local>
Resent-Message-ID: <200410151100.i9FB0jif088393@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         72728
>Category:       kern
>Synopsis:       [patch] keyboard debug and reboot qualification moved into sysctl
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Oct 15 11:00:45 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Luca Morettoni
>Release:        FreeBSD 6.0-CURRENT i386
>Organization:
Luca Morettoni
>Environment:
System: FreeBSD current.morettoni.local 6.0-CURRENT FreeBSD 6.0-CURRENT #33: Thu Oct 14 17:58:08 CEST 2004 luca@current.morettoni.local:/usr/obj/usr/src/sys/FRODO i386


	
>Description:
	This patch add to sysctl two new variables: hw.syscons.kbd_reboot and hw.syscons.kbd_debug
	The default value of this two are both 1, and that allow users to reboot and go into debug
	mode with keyboards shotcut. Setting them to 0 you can disable that at runtime.
	If you put SC_DISABLE_REBOOT and/or SC_DISABLE_KDBKEY in kernel config file that variables
	are set to 0 and you can't modify it.

>How-To-Repeat:
	
>Fix:

	Apply the following patch:

--- syscons.c.patch begins here ---
--- src/sys/dev/syscons/syscons.c.orig	Fri Oct 15 08:57:27 2004
+++ src/sys/dev/syscons/syscons.c	Thu Oct 14 17:06:23 2004
@@ -109,6 +109,19 @@
 static	int		saver_mode = CONS_NO_SAVER; /* LKM/user saver */
 static	int		run_scrn_saver = FALSE;	/* should run the saver? */
 static	int		enable_bell = TRUE; /* enable beeper */
+
+#ifndef SC_DISABLE_REBOOT
+static  int		enable_reboot = TRUE; /* enable keyboard reboot */
+#else
+static  int		enable_reboot = FALSE;
+#endif
+
+#ifndef SC_DISABLE_KDBKEY
+static  int		enable_kdb = TRUE; /* enable keyboard debug */
+#else
+static  int		enable_kdb = FALSE;
+#endif
+
 static	long        	scrn_blank_time = 0;    /* screen saver timeout value */
 #ifdef DEV_SPLASH
 static	int     	scrn_blanked;		/* # of blanked screen */
@@ -124,6 +137,14 @@
     &sc_saver_keyb_only, 0, "screen saver interrupted by input only");
 SYSCTL_INT(_hw_syscons, OID_AUTO, bell, CTLFLAG_RW, &enable_bell, 
     0, "enable bell");
+#ifndef SC_DISABLE_REBOOT
+SYSCTL_INT(_hw_syscons, OID_AUTO, kbd_reboot, CTLFLAG_RW|CTLFLAG_SECURE, &enable_reboot,
+    0, "enable keyboard reboot");
+#endif
+#ifndef SC_DISABLE_KDBKEY
+SYSCTL_INT(_hw_syscons, OID_AUTO, kbd_debug, CTLFLAG_RW|CTLFLAG_SECURE, &enable_kdb,
+    0, "enable keyboard debug");
+#endif
 #if !defined(SC_NO_FONT_LOADING) && defined(SC_DFLT_FONT)
 #include "font.h"
 #endif
@@ -3267,21 +3288,15 @@
 		break;
 
 	    case RBT:
-#ifndef SC_DISABLE_REBOOT
-		shutdown_nice(0);
-#endif
+		if (enable_reboot) shutdown_nice(0);
 		break;
 
 	    case HALT:
-#ifndef SC_DISABLE_REBOOT
-		shutdown_nice(RB_HALT);
-#endif
+		if (enable_reboot) shutdown_nice(RB_HALT);
 		break;
 
 	    case PDWN:
-#ifndef SC_DISABLE_REBOOT
-		shutdown_nice(RB_HALT|RB_POWEROFF);
-#endif
+		if (enable_reboot) shutdown_nice(RB_HALT|RB_POWEROFF);
 		break;
 
 	    case SUSP:
@@ -3292,9 +3307,7 @@
 		break;
 
 	    case DBG:
-#ifndef SC_DISABLE_KDBKEY
-		kdb_enter("manual escape to debugger");
-#endif
+		if (enable_kdb) kdb_enter("manual escape to debugger");
 		break;
 
 	    case PNC:
--- syscons.c.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



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