diff options
| -rw-r--r-- | kernel/sysctl.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 97ab1690f5ed..c0bb32414b17 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
| @@ -170,6 +170,11 @@ static int proc_taint(struct ctl_table *table, int write, | |||
| 170 | void __user *buffer, size_t *lenp, loff_t *ppos); | 170 | void __user *buffer, size_t *lenp, loff_t *ppos); |
| 171 | #endif | 171 | #endif |
| 172 | 172 | ||
| 173 | #ifdef CONFIG_PRINTK | ||
| 174 | static int proc_dmesg_restrict(struct ctl_table *table, int write, | ||
| 175 | void __user *buffer, size_t *lenp, loff_t *ppos); | ||
| 176 | #endif | ||
| 177 | |||
| 173 | #ifdef CONFIG_MAGIC_SYSRQ | 178 | #ifdef CONFIG_MAGIC_SYSRQ |
| 174 | /* Note: sysrq code uses it's own private copy */ | 179 | /* Note: sysrq code uses it's own private copy */ |
| 175 | static int __sysrq_enabled = SYSRQ_DEFAULT_ENABLE; | 180 | static int __sysrq_enabled = SYSRQ_DEFAULT_ENABLE; |
| @@ -707,7 +712,7 @@ static struct ctl_table kern_table[] = { | |||
| 707 | .data = &kptr_restrict, | 712 | .data = &kptr_restrict, |
| 708 | .maxlen = sizeof(int), | 713 | .maxlen = sizeof(int), |
| 709 | .mode = 0644, | 714 | .mode = 0644, |
| 710 | .proc_handler = proc_dointvec_minmax, | 715 | .proc_handler = proc_dmesg_restrict, |
| 711 | .extra1 = &zero, | 716 | .extra1 = &zero, |
| 712 | .extra2 = &two, | 717 | .extra2 = &two, |
| 713 | }, | 718 | }, |
| @@ -2394,6 +2399,17 @@ static int proc_taint(struct ctl_table *table, int write, | |||
| 2394 | return err; | 2399 | return err; |
| 2395 | } | 2400 | } |
| 2396 | 2401 | ||
| 2402 | #ifdef CONFIG_PRINTK | ||
| 2403 | static int proc_dmesg_restrict(struct ctl_table *table, int write, | ||
| 2404 | void __user *buffer, size_t *lenp, loff_t *ppos) | ||
| 2405 | { | ||
| 2406 | if (write && !capable(CAP_SYS_ADMIN)) | ||
| 2407 | return -EPERM; | ||
| 2408 | |||
| 2409 | return proc_dointvec_minmax(table, write, buffer, lenp, ppos); | ||
| 2410 | } | ||
| 2411 | #endif | ||
| 2412 | |||
| 2397 | struct do_proc_dointvec_minmax_conv_param { | 2413 | struct do_proc_dointvec_minmax_conv_param { |
| 2398 | int *min; | 2414 | int *min; |
| 2399 | int *max; | 2415 | int *max; |
