Commit 8eaede49 authored by Ben Hutchings's avatar Ben Hutchings Committed by Greg Kroah-Hartman

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: default avatarBen Hutchings <ben@decadent.org.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e8b5cbb0
...@@ -11,11 +11,9 @@ regardless of whatever else it is doing, unless it is completely locked up. ...@@ -11,11 +11,9 @@ regardless of whatever else it is doing, unless it is completely locked up.
You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when
configuring the kernel. When running a kernel with SysRq compiled in, configuring the kernel. When running a kernel with SysRq compiled in,
/proc/sys/kernel/sysrq controls the functions allowed to be invoked via /proc/sys/kernel/sysrq controls the functions allowed to be invoked via
the SysRq key. By default the file contains 1 which means that every the SysRq key. The default value in this file is set by the
possible SysRq request is allowed (in older versions SysRq was disabled CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE config symbol, which itself defaults
by default, and you were required to specifically enable it at run-time to 1. Here is the list of possible values in /proc/sys/kernel/sysrq:
but this is not the case any more). Here is the list of possible values
in /proc/sys/kernel/sysrq:
0 - disable sysrq completely 0 - disable sysrq completely
1 - enable all functions of sysrq 1 - enable all functions of sysrq
>1 - bitmask of allowed sysrq functions (see below for detailed function >1 - bitmask of allowed sysrq functions (see below for detailed function
...@@ -32,8 +30,9 @@ in /proc/sys/kernel/sysrq: ...@@ -32,8 +30,9 @@ in /proc/sys/kernel/sysrq:
You can set the value in the file by the following command: You can set the value in the file by the following command:
echo "number" >/proc/sys/kernel/sysrq echo "number" >/proc/sys/kernel/sysrq
The number may be written either as decimal or as hexadecimal with the The number may be written here either as decimal or as hexadecimal
0x prefix. with the 0x prefix. CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE must always be
written in hexadecimal.
Note that the value of /proc/sys/kernel/sysrq influences only the invocation Note that the value of /proc/sys/kernel/sysrq influences only the invocation
via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
#include <asm/irq_regs.h> #include <asm/irq_regs.h>
/* Whether we react on sysrq keys or just ignore them */ /* Whether we react on sysrq keys or just ignore them */
static int __read_mostly sysrq_enabled = SYSRQ_DEFAULT_ENABLE; static int __read_mostly sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE;
static bool __read_mostly sysrq_always_enabled; static bool __read_mostly sysrq_always_enabled;
unsigned short platform_sysrq_reset_seq[] __weak = { KEY_RESERVED }; unsigned short platform_sysrq_reset_seq[] __weak = { KEY_RESERVED };
......
...@@ -17,9 +17,6 @@ ...@@ -17,9 +17,6 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/types.h> #include <linux/types.h>
/* Enable/disable SYSRQ support by default (0==no, 1==yes). */
#define SYSRQ_DEFAULT_ENABLE 1
/* Possible values of bitmask for enabling sysrq functions */ /* Possible values of bitmask for enabling sysrq functions */
/* 0x0001 is reserved for enable everything */ /* 0x0001 is reserved for enable everything */
#define SYSRQ_ENABLE_LOG 0x0002 #define SYSRQ_ENABLE_LOG 0x0002
......
...@@ -190,7 +190,7 @@ static int proc_dostring_coredump(struct ctl_table *table, int write, ...@@ -190,7 +190,7 @@ static int proc_dostring_coredump(struct ctl_table *table, int write,
#ifdef CONFIG_MAGIC_SYSRQ #ifdef CONFIG_MAGIC_SYSRQ
/* Note: sysrq code uses it's own private copy */ /* Note: sysrq code uses it's own private copy */
static int __sysrq_enabled = SYSRQ_DEFAULT_ENABLE; static int __sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE;
static int sysrq_sysctl_handler(ctl_table *table, int write, static int sysrq_sysctl_handler(ctl_table *table, int write,
void __user *buffer, size_t *lenp, void __user *buffer, size_t *lenp,
......
...@@ -312,6 +312,15 @@ config MAGIC_SYSRQ ...@@ -312,6 +312,15 @@ config MAGIC_SYSRQ
keys are documented in <file:Documentation/sysrq.txt>. Don't say Y keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
unless you really know what this hack does. unless you really know what this hack does.
config MAGIC_SYSRQ_DEFAULT_ENABLE
hex "Enable magic SysRq key functions by default"
depends on MAGIC_SYSRQ
default 0x1
help
Specifies which SysRq key functions are enabled by default.
This may be set to 1 or 0 to enable or disable them all, or
to a bitmask as described in Documentation/sysrq.txt.
config DEBUG_KERNEL config DEBUG_KERNEL
bool "Kernel debugging" bool "Kernel debugging"
help help
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment