aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sysctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sysctl.c')
-rw-r--r--kernel/sysctl.c75
1 files changed, 68 insertions, 7 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index b2970d56fb76..62e4ff9968b5 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -27,6 +27,7 @@
27#include <linux/security.h> 27#include <linux/security.h>
28#include <linux/ctype.h> 28#include <linux/ctype.h>
29#include <linux/utsname.h> 29#include <linux/utsname.h>
30#include <linux/kmemcheck.h>
30#include <linux/smp_lock.h> 31#include <linux/smp_lock.h>
31#include <linux/fs.h> 32#include <linux/fs.h>
32#include <linux/init.h> 33#include <linux/init.h>
@@ -49,6 +50,7 @@
49#include <linux/reboot.h> 50#include <linux/reboot.h>
50#include <linux/ftrace.h> 51#include <linux/ftrace.h>
51#include <linux/slow-work.h> 52#include <linux/slow-work.h>
53#include <linux/perf_counter.h>
52 54
53#include <asm/uaccess.h> 55#include <asm/uaccess.h>
54#include <asm/processor.h> 56#include <asm/processor.h>
@@ -114,6 +116,7 @@ static int ngroups_max = NGROUPS_MAX;
114 116
115#ifdef CONFIG_MODULES 117#ifdef CONFIG_MODULES
116extern char modprobe_path[]; 118extern char modprobe_path[];
119extern int modules_disabled;
117#endif 120#endif
118#ifdef CONFIG_CHR_DEV_SG 121#ifdef CONFIG_CHR_DEV_SG
119extern int sg_big_buff; 122extern int sg_big_buff;
@@ -326,6 +329,14 @@ static struct ctl_table kern_table[] = {
326 .mode = 0644, 329 .mode = 0644,
327 .proc_handler = &proc_dointvec, 330 .proc_handler = &proc_dointvec,
328 }, 331 },
332 {
333 .ctl_name = CTL_UNNUMBERED,
334 .procname = "timer_migration",
335 .data = &sysctl_timer_migration,
336 .maxlen = sizeof(unsigned int),
337 .mode = 0644,
338 .proc_handler = &proc_dointvec,
339 },
329#endif 340#endif
330 { 341 {
331 .ctl_name = CTL_UNNUMBERED, 342 .ctl_name = CTL_UNNUMBERED,
@@ -534,6 +545,17 @@ static struct ctl_table kern_table[] = {
534 .proc_handler = &proc_dostring, 545 .proc_handler = &proc_dostring,
535 .strategy = &sysctl_string, 546 .strategy = &sysctl_string,
536 }, 547 },
548 {
549 .ctl_name = CTL_UNNUMBERED,
550 .procname = "modules_disabled",
551 .data = &modules_disabled,
552 .maxlen = sizeof(int),
553 .mode = 0644,
554 /* only handle a transition from default "0" to "1" */
555 .proc_handler = &proc_dointvec_minmax,
556 .extra1 = &one,
557 .extra2 = &one,
558 },
537#endif 559#endif
538#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET) 560#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
539 { 561 {
@@ -731,6 +753,14 @@ static struct ctl_table kern_table[] = {
731 }, 753 },
732 { 754 {
733 .ctl_name = CTL_UNNUMBERED, 755 .ctl_name = CTL_UNNUMBERED,
756 .procname = "bootloader_version",
757 .data = &bootloader_version,
758 .maxlen = sizeof (int),
759 .mode = 0444,
760 .proc_handler = &proc_dointvec,
761 },
762 {
763 .ctl_name = CTL_UNNUMBERED,
734 .procname = "kstack_depth_to_print", 764 .procname = "kstack_depth_to_print",
735 .data = &kstack_depth_to_print, 765 .data = &kstack_depth_to_print,
736 .maxlen = sizeof(int), 766 .maxlen = sizeof(int),
@@ -912,6 +942,43 @@ static struct ctl_table kern_table[] = {
912 .child = slow_work_sysctls, 942 .child = slow_work_sysctls,
913 }, 943 },
914#endif 944#endif
945#ifdef CONFIG_PERF_COUNTERS
946 {
947 .ctl_name = CTL_UNNUMBERED,
948 .procname = "perf_counter_paranoid",
949 .data = &sysctl_perf_counter_paranoid,
950 .maxlen = sizeof(sysctl_perf_counter_paranoid),
951 .mode = 0644,
952 .proc_handler = &proc_dointvec,
953 },
954 {
955 .ctl_name = CTL_UNNUMBERED,
956 .procname = "perf_counter_mlock_kb",
957 .data = &sysctl_perf_counter_mlock,
958 .maxlen = sizeof(sysctl_perf_counter_mlock),
959 .mode = 0644,
960 .proc_handler = &proc_dointvec,
961 },
962 {
963 .ctl_name = CTL_UNNUMBERED,
964 .procname = "perf_counter_max_sample_rate",
965 .data = &sysctl_perf_counter_sample_rate,
966 .maxlen = sizeof(sysctl_perf_counter_sample_rate),
967 .mode = 0644,
968 .proc_handler = &proc_dointvec,
969 },
970#endif
971#ifdef CONFIG_KMEMCHECK
972 {
973 .ctl_name = CTL_UNNUMBERED,
974 .procname = "kmemcheck",
975 .data = &kmemcheck_enabled,
976 .maxlen = sizeof(int),
977 .mode = 0644,
978 .proc_handler = &proc_dointvec,
979 },
980#endif
981
915/* 982/*
916 * NOTE: do not add new entries to this table unless you have read 983 * NOTE: do not add new entries to this table unless you have read
917 * Documentation/sysctl/ctl_unnumbered.txt 984 * Documentation/sysctl/ctl_unnumbered.txt
@@ -1225,7 +1292,6 @@ static struct ctl_table vm_table[] = {
1225 .strategy = &sysctl_jiffies, 1292 .strategy = &sysctl_jiffies,
1226 }, 1293 },
1227#endif 1294#endif
1228#ifdef CONFIG_SECURITY
1229 { 1295 {
1230 .ctl_name = CTL_UNNUMBERED, 1296 .ctl_name = CTL_UNNUMBERED,
1231 .procname = "mmap_min_addr", 1297 .procname = "mmap_min_addr",
@@ -1234,7 +1300,6 @@ static struct ctl_table vm_table[] = {
1234 .mode = 0644, 1300 .mode = 0644,
1235 .proc_handler = &proc_doulongvec_minmax, 1301 .proc_handler = &proc_doulongvec_minmax,
1236 }, 1302 },
1237#endif
1238#ifdef CONFIG_NUMA 1303#ifdef CONFIG_NUMA
1239 { 1304 {
1240 .ctl_name = CTL_UNNUMBERED, 1305 .ctl_name = CTL_UNNUMBERED,
@@ -1272,7 +1337,6 @@ static struct ctl_table vm_table[] = {
1272 .extra2 = &one, 1337 .extra2 = &one,
1273 }, 1338 },
1274#endif 1339#endif
1275#ifdef CONFIG_UNEVICTABLE_LRU
1276 { 1340 {
1277 .ctl_name = CTL_UNNUMBERED, 1341 .ctl_name = CTL_UNNUMBERED,
1278 .procname = "scan_unevictable_pages", 1342 .procname = "scan_unevictable_pages",
@@ -1281,7 +1345,6 @@ static struct ctl_table vm_table[] = {
1281 .mode = 0644, 1345 .mode = 0644,
1282 .proc_handler = &scan_unevictable_handler, 1346 .proc_handler = &scan_unevictable_handler,
1283 }, 1347 },
1284#endif
1285/* 1348/*
1286 * NOTE: do not add new entries to this table unless you have read 1349 * NOTE: do not add new entries to this table unless you have read
1287 * Documentation/sysctl/ctl_unnumbered.txt 1350 * Documentation/sysctl/ctl_unnumbered.txt
@@ -2220,7 +2283,7 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table,
2220 void *data) 2283 void *data)
2221{ 2284{
2222#define TMPBUFLEN 21 2285#define TMPBUFLEN 21
2223 int *i, vleft, first=1, neg, val; 2286 int *i, vleft, first = 1, neg;
2224 unsigned long lval; 2287 unsigned long lval;
2225 size_t left, len; 2288 size_t left, len;
2226 2289
@@ -2273,8 +2336,6 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table,
2273 len = p-buf; 2336 len = p-buf;
2274 if ((len < left) && *p && !isspace(*p)) 2337 if ((len < left) && *p && !isspace(*p))
2275 break; 2338 break;
2276 if (neg)
2277 val = -val;
2278 s += len; 2339 s += len;
2279 left -= len; 2340 left -= len;
2280 2341