diff options
Diffstat (limited to 'kernel/sysctl.c')
| -rw-r--r-- | kernel/sysctl.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index bcfb79e94ec7..b12583047757 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
| @@ -163,6 +163,27 @@ static int proc_taint(struct ctl_table *table, int write, | |||
| 163 | void __user *buffer, size_t *lenp, loff_t *ppos); | 163 | void __user *buffer, size_t *lenp, loff_t *ppos); |
| 164 | #endif | 164 | #endif |
| 165 | 165 | ||
| 166 | #ifdef CONFIG_MAGIC_SYSRQ | ||
| 167 | static int __sysrq_enabled; /* Note: sysrq code ises it's own private copy */ | ||
| 168 | |||
| 169 | static int sysrq_sysctl_handler(ctl_table *table, int write, | ||
| 170 | void __user *buffer, size_t *lenp, | ||
| 171 | loff_t *ppos) | ||
| 172 | { | ||
| 173 | int error; | ||
| 174 | |||
| 175 | error = proc_dointvec(table, write, buffer, lenp, ppos); | ||
| 176 | if (error) | ||
| 177 | return error; | ||
| 178 | |||
| 179 | if (write) | ||
| 180 | sysrq_toggle_support(__sysrq_enabled); | ||
| 181 | |||
| 182 | return 0; | ||
| 183 | } | ||
| 184 | |||
| 185 | #endif | ||
| 186 | |||
| 166 | static struct ctl_table root_table[]; | 187 | static struct ctl_table root_table[]; |
| 167 | static struct ctl_table_root sysctl_table_root; | 188 | static struct ctl_table_root sysctl_table_root; |
| 168 | static struct ctl_table_header root_table_header = { | 189 | static struct ctl_table_header root_table_header = { |
| @@ -567,7 +588,7 @@ static struct ctl_table kern_table[] = { | |||
| 567 | .data = &__sysrq_enabled, | 588 | .data = &__sysrq_enabled, |
| 568 | .maxlen = sizeof (int), | 589 | .maxlen = sizeof (int), |
| 569 | .mode = 0644, | 590 | .mode = 0644, |
| 570 | .proc_handler = proc_dointvec, | 591 | .proc_handler = sysrq_sysctl_handler, |
| 571 | }, | 592 | }, |
| 572 | #endif | 593 | #endif |
| 573 | #ifdef CONFIG_PROC_SYSCTL | 594 | #ifdef CONFIG_PROC_SYSCTL |
| @@ -621,7 +642,7 @@ static struct ctl_table kern_table[] = { | |||
| 621 | #endif | 642 | #endif |
| 622 | { | 643 | { |
| 623 | .procname = "userprocess_debug", | 644 | .procname = "userprocess_debug", |
| 624 | .data = &sysctl_userprocess_debug, | 645 | .data = &show_unhandled_signals, |
| 625 | .maxlen = sizeof(int), | 646 | .maxlen = sizeof(int), |
| 626 | .mode = 0644, | 647 | .mode = 0644, |
| 627 | .proc_handler = proc_dointvec, | 648 | .proc_handler = proc_dointvec, |
| @@ -1431,7 +1452,8 @@ static struct ctl_table fs_table[] = { | |||
| 1431 | }; | 1452 | }; |
| 1432 | 1453 | ||
| 1433 | static struct ctl_table debug_table[] = { | 1454 | static struct ctl_table debug_table[] = { |
| 1434 | #if defined(CONFIG_X86) || defined(CONFIG_PPC) || defined(CONFIG_SPARC) | 1455 | #if defined(CONFIG_X86) || defined(CONFIG_PPC) || defined(CONFIG_SPARC) || \ |
| 1456 | defined(CONFIG_S390) | ||
| 1435 | { | 1457 | { |
| 1436 | .procname = "exception-trace", | 1458 | .procname = "exception-trace", |
| 1437 | .data = &show_unhandled_signals, | 1459 | .data = &show_unhandled_signals, |
