diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2013-10-06 20:05:46 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-10-16 16:01:44 -0400 |
commit | 8eaede49dfdc1ff1d727f9c913665b8009945191 (patch) | |
tree | 094c592c127142c4f01766fb82e3a7973c87ca1c | |
parent | e8b5cbb041130ef297c90f8af2d3d45dfb9e6d15 (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.txt | 13 | ||||
-rw-r--r-- | drivers/tty/sysrq.c | 2 | ||||
-rw-r--r-- | include/linux/sysrq.h | 3 | ||||
-rw-r--r-- | kernel/sysctl.c | 2 | ||||
-rw-r--r-- | lib/Kconfig.debug | 9 |
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. | |||
11 | You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when | 11 | You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when |
12 | configuring the kernel. When running a kernel with SysRq compiled in, | 12 | configuring 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 |
14 | the SysRq key. By default the file contains 1 which means that every | 14 | the SysRq key. The default value in this file is set by the |
15 | possible SysRq request is allowed (in older versions SysRq was disabled | 15 | CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE config symbol, which itself defaults |
16 | by default, and you were required to specifically enable it at run-time | 16 | to 1. Here is the list of possible values in /proc/sys/kernel/sysrq: |
17 | but this is not the case any more). Here is the list of possible values | ||
18 | in /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: | |||
32 | You can set the value in the file by the following command: | 30 | You 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 | ||
35 | The number may be written either as decimal or as hexadecimal with the | 33 | The number may be written here either as decimal or as hexadecimal |
36 | 0x prefix. | 34 | with the 0x prefix. CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE must always be |
35 | written in hexadecimal. | ||
37 | 36 | ||
38 | Note that the value of /proc/sys/kernel/sysrq influences only the invocation | 37 | Note that the value of /proc/sys/kernel/sysrq influences only the invocation |
39 | via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always | 38 | via 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 */ |
54 | static int __read_mostly sysrq_enabled = SYSRQ_DEFAULT_ENABLE; | 54 | static int __read_mostly sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE; |
55 | static bool __read_mostly sysrq_always_enabled; | 55 | static bool __read_mostly sysrq_always_enabled; |
56 | 56 | ||
57 | unsigned short platform_sysrq_reset_seq[] __weak = { KEY_RESERVED }; | 57 | unsigned 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 */ |
193 | static int __sysrq_enabled = SYSRQ_DEFAULT_ENABLE; | 193 | static int __sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE; |
194 | 194 | ||
195 | static int sysrq_sysctl_handler(ctl_table *table, int write, | 195 | static 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 | ||
315 | config 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 | |||
315 | config DEBUG_KERNEL | 324 | config DEBUG_KERNEL |
316 | bool "Kernel debugging" | 325 | bool "Kernel debugging" |
317 | help | 326 | help |