aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2013-10-06 20:05:46 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-10-16 16:01:44 -0400
commit8eaede49dfdc1ff1d727f9c913665b8009945191 (patch)
tree094c592c127142c4f01766fb82e3a7973c87ca1c
parente8b5cbb041130ef297c90f8af2d3d45dfb9e6d15 (diff)
sysrq: Allow magic SysRq key functions to be disabled through Kconfig
Turn the initial value of sysctl kernel.sysrq (SYSRQ_DEFAULT_ENABLE) into a Kconfig variable. Original version by Bastian Blank <waldi@debian.org>. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--Documentation/sysrq.txt13
-rw-r--r--drivers/tty/sysrq.c2
-rw-r--r--include/linux/sysrq.h3
-rw-r--r--kernel/sysctl.c2
-rw-r--r--lib/Kconfig.debug9
5 files changed, 17 insertions, 12 deletions
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
index 1c0471dc70fe..0e307c94809a 100644
--- a/Documentation/sysrq.txt
+++ b/Documentation/sysrq.txt
@@ -11,11 +11,9 @@ regardless of whatever else it is doing, unless it is completely locked up.
11You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when 11You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when
12configuring the kernel. When running a kernel with SysRq compiled in, 12configuring the kernel. When running a kernel with SysRq compiled in,
13/proc/sys/kernel/sysrq controls the functions allowed to be invoked via 13/proc/sys/kernel/sysrq controls the functions allowed to be invoked via
14the SysRq key. By default the file contains 1 which means that every 14the SysRq key. The default value in this file is set by the
15possible SysRq request is allowed (in older versions SysRq was disabled 15CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE config symbol, which itself defaults
16by default, and you were required to specifically enable it at run-time 16to 1. Here is the list of possible values in /proc/sys/kernel/sysrq:
17but this is not the case any more). Here is the list of possible values
18in /proc/sys/kernel/sysrq:
19 0 - disable sysrq completely 17 0 - disable sysrq completely
20 1 - enable all functions of sysrq 18 1 - enable all functions of sysrq
21 >1 - bitmask of allowed sysrq functions (see below for detailed function 19 >1 - bitmask of allowed sysrq functions (see below for detailed function
@@ -32,8 +30,9 @@ in /proc/sys/kernel/sysrq:
32You can set the value in the file by the following command: 30You can set the value in the file by the following command:
33 echo "number" >/proc/sys/kernel/sysrq 31 echo "number" >/proc/sys/kernel/sysrq
34 32
35The number may be written either as decimal or as hexadecimal with the 33The number may be written here either as decimal or as hexadecimal
360x prefix. 34with the 0x prefix. CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE must always be
35written in hexadecimal.
37 36
38Note that the value of /proc/sys/kernel/sysrq influences only the invocation 37Note that the value of /proc/sys/kernel/sysrq influences only the invocation
39via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always 38via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
index 40a9fe9d3b10..ce396ecdf412 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -51,7 +51,7 @@
51#include <asm/irq_regs.h> 51#include <asm/irq_regs.h>
52 52
53/* Whether we react on sysrq keys or just ignore them */ 53/* Whether we react on sysrq keys or just ignore them */
54static int __read_mostly sysrq_enabled = SYSRQ_DEFAULT_ENABLE; 54static int __read_mostly sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE;
55static bool __read_mostly sysrq_always_enabled; 55static bool __read_mostly sysrq_always_enabled;
56 56
57unsigned short platform_sysrq_reset_seq[] __weak = { KEY_RESERVED }; 57unsigned short platform_sysrq_reset_seq[] __weak = { KEY_RESERVED };
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h
index 7faf933cced7..387fa7d05c98 100644
--- a/include/linux/sysrq.h
+++ b/include/linux/sysrq.h
@@ -17,9 +17,6 @@
17#include <linux/errno.h> 17#include <linux/errno.h>
18#include <linux/types.h> 18#include <linux/types.h>
19 19
20/* Enable/disable SYSRQ support by default (0==no, 1==yes). */
21#define SYSRQ_DEFAULT_ENABLE 1
22
23/* Possible values of bitmask for enabling sysrq functions */ 20/* Possible values of bitmask for enabling sysrq functions */
24/* 0x0001 is reserved for enable everything */ 21/* 0x0001 is reserved for enable everything */
25#define SYSRQ_ENABLE_LOG 0x0002 22#define SYSRQ_ENABLE_LOG 0x0002
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index b2f06f3c6a3f..8b80f1bae21a 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -190,7 +190,7 @@ static int proc_dostring_coredump(struct ctl_table *table, int write,
190 190
191#ifdef CONFIG_MAGIC_SYSRQ 191#ifdef CONFIG_MAGIC_SYSRQ
192/* Note: sysrq code uses it's own private copy */ 192/* Note: sysrq code uses it's own private copy */
193static int __sysrq_enabled = SYSRQ_DEFAULT_ENABLE; 193static int __sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE;
194 194
195static int sysrq_sysctl_handler(ctl_table *table, int write, 195static int sysrq_sysctl_handler(ctl_table *table, int write,
196 void __user *buffer, size_t *lenp, 196 void __user *buffer, size_t *lenp,
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 06344d986eb9..29329374ff0d 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -312,6 +312,15 @@ config MAGIC_SYSRQ
312 keys are documented in <file:Documentation/sysrq.txt>. Don't say Y 312 keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
313 unless you really know what this hack does. 313 unless you really know what this hack does.
314 314
315config MAGIC_SYSRQ_DEFAULT_ENABLE
316 hex "Enable magic SysRq key functions by default"
317 depends on MAGIC_SYSRQ
318 default 0x1
319 help
320 Specifies which SysRq key functions are enabled by default.
321 This may be set to 1 or 0 to enable or disable them all, or
322 to a bitmask as described in Documentation/sysrq.txt.
323
315config DEBUG_KERNEL 324config DEBUG_KERNEL
316 bool "Kernel debugging" 325 bool "Kernel debugging"
317 help 326 help