|
@@ -27,7 +27,6 @@
|
|
#include <linux/security.h>
|
|
#include <linux/security.h>
|
|
#include <linux/ctype.h>
|
|
#include <linux/ctype.h>
|
|
#include <linux/kmemcheck.h>
|
|
#include <linux/kmemcheck.h>
|
|
-#include <linux/smp_lock.h>
|
|
|
|
#include <linux/fs.h>
|
|
#include <linux/fs.h>
|
|
#include <linux/init.h>
|
|
#include <linux/init.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/kernel.h>
|
|
@@ -61,7 +60,6 @@
|
|
#include <asm/io.h>
|
|
#include <asm/io.h>
|
|
#endif
|
|
#endif
|
|
|
|
|
|
-static int deprecated_sysctl_warning(struct __sysctl_args *args);
|
|
|
|
|
|
|
|
#if defined(CONFIG_SYSCTL)
|
|
#if defined(CONFIG_SYSCTL)
|
|
|
|
|
|
@@ -210,31 +208,26 @@ extern int lock_stat;
|
|
|
|
|
|
static struct ctl_table root_table[] = {
|
|
static struct ctl_table root_table[] = {
|
|
{
|
|
{
|
|
- .ctl_name = CTL_KERN,
|
|
|
|
.procname = "kernel",
|
|
.procname = "kernel",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = kern_table,
|
|
.child = kern_table,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_VM,
|
|
|
|
.procname = "vm",
|
|
.procname = "vm",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = vm_table,
|
|
.child = vm_table,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_FS,
|
|
|
|
.procname = "fs",
|
|
.procname = "fs",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = fs_table,
|
|
.child = fs_table,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_DEBUG,
|
|
|
|
.procname = "debug",
|
|
.procname = "debug",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = debug_table,
|
|
.child = debug_table,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_DEV,
|
|
|
|
.procname = "dev",
|
|
.procname = "dev",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = dev_table,
|
|
.child = dev_table,
|
|
@@ -243,7 +236,7 @@ static struct ctl_table root_table[] = {
|
|
* NOTE: do not add new entries to this table unless you have read
|
|
* NOTE: do not add new entries to this table unless you have read
|
|
* Documentation/sysctl/ctl_unnumbered.txt
|
|
* Documentation/sysctl/ctl_unnumbered.txt
|
|
*/
|
|
*/
|
|
- { .ctl_name = 0 }
|
|
|
|
|
|
+ { }
|
|
};
|
|
};
|
|
|
|
|
|
#ifdef CONFIG_SCHED_DEBUG
|
|
#ifdef CONFIG_SCHED_DEBUG
|
|
@@ -255,192 +248,166 @@ static int max_wakeup_granularity_ns = NSEC_PER_SEC; /* 1 second */
|
|
|
|
|
|
static struct ctl_table kern_table[] = {
|
|
static struct ctl_table kern_table[] = {
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_child_runs_first",
|
|
.procname = "sched_child_runs_first",
|
|
.data = &sysctl_sched_child_runs_first,
|
|
.data = &sysctl_sched_child_runs_first,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#ifdef CONFIG_SCHED_DEBUG
|
|
#ifdef CONFIG_SCHED_DEBUG
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_min_granularity_ns",
|
|
.procname = "sched_min_granularity_ns",
|
|
.data = &sysctl_sched_min_granularity,
|
|
.data = &sysctl_sched_min_granularity,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &sched_nr_latency_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = sched_nr_latency_handler,
|
|
.extra1 = &min_sched_granularity_ns,
|
|
.extra1 = &min_sched_granularity_ns,
|
|
.extra2 = &max_sched_granularity_ns,
|
|
.extra2 = &max_sched_granularity_ns,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_latency_ns",
|
|
.procname = "sched_latency_ns",
|
|
.data = &sysctl_sched_latency,
|
|
.data = &sysctl_sched_latency,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &sched_nr_latency_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = sched_nr_latency_handler,
|
|
.extra1 = &min_sched_granularity_ns,
|
|
.extra1 = &min_sched_granularity_ns,
|
|
.extra2 = &max_sched_granularity_ns,
|
|
.extra2 = &max_sched_granularity_ns,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_wakeup_granularity_ns",
|
|
.procname = "sched_wakeup_granularity_ns",
|
|
.data = &sysctl_sched_wakeup_granularity,
|
|
.data = &sysctl_sched_wakeup_granularity,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &min_wakeup_granularity_ns,
|
|
.extra1 = &min_wakeup_granularity_ns,
|
|
.extra2 = &max_wakeup_granularity_ns,
|
|
.extra2 = &max_wakeup_granularity_ns,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_shares_ratelimit",
|
|
.procname = "sched_shares_ratelimit",
|
|
.data = &sysctl_sched_shares_ratelimit,
|
|
.data = &sysctl_sched_shares_ratelimit,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_shares_thresh",
|
|
.procname = "sched_shares_thresh",
|
|
.data = &sysctl_sched_shares_thresh,
|
|
.data = &sysctl_sched_shares_thresh,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_features",
|
|
.procname = "sched_features",
|
|
.data = &sysctl_sched_features,
|
|
.data = &sysctl_sched_features,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_migration_cost",
|
|
.procname = "sched_migration_cost",
|
|
.data = &sysctl_sched_migration_cost,
|
|
.data = &sysctl_sched_migration_cost,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_nr_migrate",
|
|
.procname = "sched_nr_migrate",
|
|
.data = &sysctl_sched_nr_migrate,
|
|
.data = &sysctl_sched_nr_migrate,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_time_avg",
|
|
.procname = "sched_time_avg",
|
|
.data = &sysctl_sched_time_avg,
|
|
.data = &sysctl_sched_time_avg,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "timer_migration",
|
|
.procname = "timer_migration",
|
|
.data = &sysctl_timer_migration,
|
|
.data = &sysctl_timer_migration,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one,
|
|
.extra2 = &one,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_rt_period_us",
|
|
.procname = "sched_rt_period_us",
|
|
.data = &sysctl_sched_rt_period,
|
|
.data = &sysctl_sched_rt_period,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &sched_rt_handler,
|
|
|
|
|
|
+ .proc_handler = sched_rt_handler,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_rt_runtime_us",
|
|
.procname = "sched_rt_runtime_us",
|
|
.data = &sysctl_sched_rt_runtime,
|
|
.data = &sysctl_sched_rt_runtime,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &sched_rt_handler,
|
|
|
|
|
|
+ .proc_handler = sched_rt_handler,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "sched_compat_yield",
|
|
.procname = "sched_compat_yield",
|
|
.data = &sysctl_sched_compat_yield,
|
|
.data = &sysctl_sched_compat_yield,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#ifdef CONFIG_PROVE_LOCKING
|
|
#ifdef CONFIG_PROVE_LOCKING
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "prove_locking",
|
|
.procname = "prove_locking",
|
|
.data = &prove_locking,
|
|
.data = &prove_locking,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_LOCK_STAT
|
|
#ifdef CONFIG_LOCK_STAT
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "lock_stat",
|
|
.procname = "lock_stat",
|
|
.data = &lock_stat,
|
|
.data = &lock_stat,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = KERN_PANIC,
|
|
|
|
.procname = "panic",
|
|
.procname = "panic",
|
|
.data = &panic_timeout,
|
|
.data = &panic_timeout,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_CORE_USES_PID,
|
|
|
|
.procname = "core_uses_pid",
|
|
.procname = "core_uses_pid",
|
|
.data = &core_uses_pid,
|
|
.data = &core_uses_pid,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_CORE_PATTERN,
|
|
|
|
.procname = "core_pattern",
|
|
.procname = "core_pattern",
|
|
.data = core_pattern,
|
|
.data = core_pattern,
|
|
.maxlen = CORENAME_MAX_SIZE,
|
|
.maxlen = CORENAME_MAX_SIZE,
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dostring,
|
|
|
|
- .strategy = &sysctl_string,
|
|
|
|
|
|
+ .proc_handler = proc_dostring,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "core_pipe_limit",
|
|
.procname = "core_pipe_limit",
|
|
.data = &core_pipe_limit,
|
|
.data = &core_pipe_limit,
|
|
.maxlen = sizeof(unsigned int),
|
|
.maxlen = sizeof(unsigned int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#ifdef CONFIG_PROC_SYSCTL
|
|
#ifdef CONFIG_PROC_SYSCTL
|
|
{
|
|
{
|
|
.procname = "tainted",
|
|
.procname = "tainted",
|
|
.maxlen = sizeof(long),
|
|
.maxlen = sizeof(long),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_taint,
|
|
|
|
|
|
+ .proc_handler = proc_taint,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_LATENCYTOP
|
|
#ifdef CONFIG_LATENCYTOP
|
|
@@ -449,181 +416,160 @@ static struct ctl_table kern_table[] = {
|
|
.data = &latencytop_enabled,
|
|
.data = &latencytop_enabled,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
{
|
|
{
|
|
- .ctl_name = KERN_REALROOTDEV,
|
|
|
|
.procname = "real-root-dev",
|
|
.procname = "real-root-dev",
|
|
.data = &real_root_dev,
|
|
.data = &real_root_dev,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "print-fatal-signals",
|
|
.procname = "print-fatal-signals",
|
|
.data = &print_fatal_signals,
|
|
.data = &print_fatal_signals,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#ifdef CONFIG_SPARC
|
|
#ifdef CONFIG_SPARC
|
|
{
|
|
{
|
|
- .ctl_name = KERN_SPARC_REBOOT,
|
|
|
|
.procname = "reboot-cmd",
|
|
.procname = "reboot-cmd",
|
|
.data = reboot_command,
|
|
.data = reboot_command,
|
|
.maxlen = 256,
|
|
.maxlen = 256,
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dostring,
|
|
|
|
- .strategy = &sysctl_string,
|
|
|
|
|
|
+ .proc_handler = proc_dostring,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_SPARC_STOP_A,
|
|
|
|
.procname = "stop-a",
|
|
.procname = "stop-a",
|
|
.data = &stop_a_enabled,
|
|
.data = &stop_a_enabled,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_SPARC_SCONS_PWROFF,
|
|
|
|
.procname = "scons-poweroff",
|
|
.procname = "scons-poweroff",
|
|
.data = &scons_pwroff,
|
|
.data = &scons_pwroff,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_SPARC64
|
|
#ifdef CONFIG_SPARC64
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "tsb-ratio",
|
|
.procname = "tsb-ratio",
|
|
.data = &sysctl_tsb_ratio,
|
|
.data = &sysctl_tsb_ratio,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef __hppa__
|
|
#ifdef __hppa__
|
|
{
|
|
{
|
|
- .ctl_name = KERN_HPPA_PWRSW,
|
|
|
|
.procname = "soft-power",
|
|
.procname = "soft-power",
|
|
.data = &pwrsw_enabled,
|
|
.data = &pwrsw_enabled,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_HPPA_UNALIGNED,
|
|
|
|
.procname = "unaligned-trap",
|
|
.procname = "unaligned-trap",
|
|
.data = &unaligned_enabled,
|
|
.data = &unaligned_enabled,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = KERN_CTLALTDEL,
|
|
|
|
.procname = "ctrl-alt-del",
|
|
.procname = "ctrl-alt-del",
|
|
.data = &C_A_D,
|
|
.data = &C_A_D,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#ifdef CONFIG_FUNCTION_TRACER
|
|
#ifdef CONFIG_FUNCTION_TRACER
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "ftrace_enabled",
|
|
.procname = "ftrace_enabled",
|
|
.data = &ftrace_enabled,
|
|
.data = &ftrace_enabled,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &ftrace_enable_sysctl,
|
|
|
|
|
|
+ .proc_handler = ftrace_enable_sysctl,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_STACK_TRACER
|
|
#ifdef CONFIG_STACK_TRACER
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "stack_tracer_enabled",
|
|
.procname = "stack_tracer_enabled",
|
|
.data = &stack_tracer_enabled,
|
|
.data = &stack_tracer_enabled,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &stack_trace_sysctl,
|
|
|
|
|
|
+ .proc_handler = stack_trace_sysctl,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_TRACING
|
|
#ifdef CONFIG_TRACING
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "ftrace_dump_on_oops",
|
|
.procname = "ftrace_dump_on_oops",
|
|
.data = &ftrace_dump_on_oops,
|
|
.data = &ftrace_dump_on_oops,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_MODULES
|
|
#ifdef CONFIG_MODULES
|
|
{
|
|
{
|
|
- .ctl_name = KERN_MODPROBE,
|
|
|
|
.procname = "modprobe",
|
|
.procname = "modprobe",
|
|
.data = &modprobe_path,
|
|
.data = &modprobe_path,
|
|
.maxlen = KMOD_PATH_LEN,
|
|
.maxlen = KMOD_PATH_LEN,
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dostring,
|
|
|
|
- .strategy = &sysctl_string,
|
|
|
|
|
|
+ .proc_handler = proc_dostring,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "modules_disabled",
|
|
.procname = "modules_disabled",
|
|
.data = &modules_disabled,
|
|
.data = &modules_disabled,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
/* only handle a transition from default "0" to "1" */
|
|
/* only handle a transition from default "0" to "1" */
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &one,
|
|
.extra1 = &one,
|
|
.extra2 = &one,
|
|
.extra2 = &one,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
|
|
#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
|
|
{
|
|
{
|
|
- .ctl_name = KERN_HOTPLUG,
|
|
|
|
.procname = "hotplug",
|
|
.procname = "hotplug",
|
|
.data = &uevent_helper,
|
|
.data = &uevent_helper,
|
|
.maxlen = UEVENT_HELPER_PATH_LEN,
|
|
.maxlen = UEVENT_HELPER_PATH_LEN,
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dostring,
|
|
|
|
- .strategy = &sysctl_string,
|
|
|
|
|
|
+ .proc_handler = proc_dostring,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_CHR_DEV_SG
|
|
#ifdef CONFIG_CHR_DEV_SG
|
|
{
|
|
{
|
|
- .ctl_name = KERN_SG_BIG_BUFF,
|
|
|
|
.procname = "sg-big-buff",
|
|
.procname = "sg-big-buff",
|
|
.data = &sg_big_buff,
|
|
.data = &sg_big_buff,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0444,
|
|
.mode = 0444,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_BSD_PROCESS_ACCT
|
|
#ifdef CONFIG_BSD_PROCESS_ACCT
|
|
{
|
|
{
|
|
- .ctl_name = KERN_ACCT,
|
|
|
|
.procname = "acct",
|
|
.procname = "acct",
|
|
.data = &acct_parm,
|
|
.data = &acct_parm,
|
|
.maxlen = 3*sizeof(int),
|
|
.maxlen = 3*sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_MAGIC_SYSRQ
|
|
#ifdef CONFIG_MAGIC_SYSRQ
|
|
{
|
|
{
|
|
- .ctl_name = KERN_SYSRQ,
|
|
|
|
.procname = "sysrq",
|
|
.procname = "sysrq",
|
|
.data = &__sysrq_enabled,
|
|
.data = &__sysrq_enabled,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_PROC_SYSCTL
|
|
#ifdef CONFIG_PROC_SYSCTL
|
|
@@ -632,215 +578,188 @@ static struct ctl_table kern_table[] = {
|
|
.data = NULL,
|
|
.data = NULL,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0600,
|
|
.mode = 0600,
|
|
- .proc_handler = &proc_do_cad_pid,
|
|
|
|
|
|
+ .proc_handler = proc_do_cad_pid,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = KERN_MAX_THREADS,
|
|
|
|
.procname = "threads-max",
|
|
.procname = "threads-max",
|
|
.data = &max_threads,
|
|
.data = &max_threads,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_RANDOM,
|
|
|
|
.procname = "random",
|
|
.procname = "random",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = random_table,
|
|
.child = random_table,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_OVERFLOWUID,
|
|
|
|
.procname = "overflowuid",
|
|
.procname = "overflowuid",
|
|
.data = &overflowuid,
|
|
.data = &overflowuid,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &minolduid,
|
|
.extra1 = &minolduid,
|
|
.extra2 = &maxolduid,
|
|
.extra2 = &maxolduid,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_OVERFLOWGID,
|
|
|
|
.procname = "overflowgid",
|
|
.procname = "overflowgid",
|
|
.data = &overflowgid,
|
|
.data = &overflowgid,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &minolduid,
|
|
.extra1 = &minolduid,
|
|
.extra2 = &maxolduid,
|
|
.extra2 = &maxolduid,
|
|
},
|
|
},
|
|
#ifdef CONFIG_S390
|
|
#ifdef CONFIG_S390
|
|
#ifdef CONFIG_MATHEMU
|
|
#ifdef CONFIG_MATHEMU
|
|
{
|
|
{
|
|
- .ctl_name = KERN_IEEE_EMULATION_WARNINGS,
|
|
|
|
.procname = "ieee_emulation_warnings",
|
|
.procname = "ieee_emulation_warnings",
|
|
.data = &sysctl_ieee_emulation_warnings,
|
|
.data = &sysctl_ieee_emulation_warnings,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = KERN_S390_USER_DEBUG_LOGGING,
|
|
|
|
.procname = "userprocess_debug",
|
|
.procname = "userprocess_debug",
|
|
.data = &sysctl_userprocess_debug,
|
|
.data = &sysctl_userprocess_debug,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = KERN_PIDMAX,
|
|
|
|
.procname = "pid_max",
|
|
.procname = "pid_max",
|
|
.data = &pid_max,
|
|
.data = &pid_max,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &pid_max_min,
|
|
.extra1 = &pid_max_min,
|
|
.extra2 = &pid_max_max,
|
|
.extra2 = &pid_max_max,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_PANIC_ON_OOPS,
|
|
|
|
.procname = "panic_on_oops",
|
|
.procname = "panic_on_oops",
|
|
.data = &panic_on_oops,
|
|
.data = &panic_on_oops,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#if defined CONFIG_PRINTK
|
|
#if defined CONFIG_PRINTK
|
|
{
|
|
{
|
|
- .ctl_name = KERN_PRINTK,
|
|
|
|
.procname = "printk",
|
|
.procname = "printk",
|
|
.data = &console_loglevel,
|
|
.data = &console_loglevel,
|
|
.maxlen = 4*sizeof(int),
|
|
.maxlen = 4*sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_PRINTK_RATELIMIT,
|
|
|
|
.procname = "printk_ratelimit",
|
|
.procname = "printk_ratelimit",
|
|
.data = &printk_ratelimit_state.interval,
|
|
.data = &printk_ratelimit_state.interval,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_jiffies,
|
|
|
|
- .strategy = &sysctl_jiffies,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_jiffies,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_PRINTK_RATELIMIT_BURST,
|
|
|
|
.procname = "printk_ratelimit_burst",
|
|
.procname = "printk_ratelimit_burst",
|
|
.data = &printk_ratelimit_state.burst,
|
|
.data = &printk_ratelimit_state.burst,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "printk_delay",
|
|
.procname = "printk_delay",
|
|
.data = &printk_delay_msec,
|
|
.data = &printk_delay_msec,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &ten_thousand,
|
|
.extra2 = &ten_thousand,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = KERN_NGROUPS_MAX,
|
|
|
|
.procname = "ngroups_max",
|
|
.procname = "ngroups_max",
|
|
.data = &ngroups_max,
|
|
.data = &ngroups_max,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0444,
|
|
.mode = 0444,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86)
|
|
#if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86)
|
|
{
|
|
{
|
|
- .ctl_name = KERN_UNKNOWN_NMI_PANIC,
|
|
|
|
.procname = "unknown_nmi_panic",
|
|
.procname = "unknown_nmi_panic",
|
|
.data = &unknown_nmi_panic,
|
|
.data = &unknown_nmi_panic,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
.procname = "nmi_watchdog",
|
|
.procname = "nmi_watchdog",
|
|
.data = &nmi_watchdog_enabled,
|
|
.data = &nmi_watchdog_enabled,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_nmi_enabled,
|
|
|
|
|
|
+ .proc_handler = proc_nmi_enabled,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#if defined(CONFIG_X86)
|
|
#if defined(CONFIG_X86)
|
|
{
|
|
{
|
|
- .ctl_name = KERN_PANIC_ON_NMI,
|
|
|
|
.procname = "panic_on_unrecovered_nmi",
|
|
.procname = "panic_on_unrecovered_nmi",
|
|
.data = &panic_on_unrecovered_nmi,
|
|
.data = &panic_on_unrecovered_nmi,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "panic_on_io_nmi",
|
|
.procname = "panic_on_io_nmi",
|
|
.data = &panic_on_io_nmi,
|
|
.data = &panic_on_io_nmi,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = KERN_BOOTLOADER_TYPE,
|
|
|
|
.procname = "bootloader_type",
|
|
.procname = "bootloader_type",
|
|
.data = &bootloader_type,
|
|
.data = &bootloader_type,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0444,
|
|
.mode = 0444,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "bootloader_version",
|
|
.procname = "bootloader_version",
|
|
.data = &bootloader_version,
|
|
.data = &bootloader_version,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0444,
|
|
.mode = 0444,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "kstack_depth_to_print",
|
|
.procname = "kstack_depth_to_print",
|
|
.data = &kstack_depth_to_print,
|
|
.data = &kstack_depth_to_print,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "io_delay_type",
|
|
.procname = "io_delay_type",
|
|
.data = &io_delay_type,
|
|
.data = &io_delay_type,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#if defined(CONFIG_MMU)
|
|
#if defined(CONFIG_MMU)
|
|
{
|
|
{
|
|
- .ctl_name = KERN_RANDOMIZE,
|
|
|
|
.procname = "randomize_va_space",
|
|
.procname = "randomize_va_space",
|
|
.data = &randomize_va_space,
|
|
.data = &randomize_va_space,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#if defined(CONFIG_S390) && defined(CONFIG_SMP)
|
|
#if defined(CONFIG_S390) && defined(CONFIG_SMP)
|
|
{
|
|
{
|
|
- .ctl_name = KERN_SPIN_RETRY,
|
|
|
|
.procname = "spin_retry",
|
|
.procname = "spin_retry",
|
|
.data = &spin_retry,
|
|
.data = &spin_retry,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#if defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)
|
|
#if defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)
|
|
@@ -849,123 +768,104 @@ static struct ctl_table kern_table[] = {
|
|
.data = &acpi_realmode_flags,
|
|
.data = &acpi_realmode_flags,
|
|
.maxlen = sizeof (unsigned long),
|
|
.maxlen = sizeof (unsigned long),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_doulongvec_minmax,
|
|
|
|
|
|
+ .proc_handler = proc_doulongvec_minmax,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_IA64
|
|
#ifdef CONFIG_IA64
|
|
{
|
|
{
|
|
- .ctl_name = KERN_IA64_UNALIGNED,
|
|
|
|
.procname = "ignore-unaligned-usertrap",
|
|
.procname = "ignore-unaligned-usertrap",
|
|
.data = &no_unaligned_warning,
|
|
.data = &no_unaligned_warning,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "unaligned-dump-stack",
|
|
.procname = "unaligned-dump-stack",
|
|
.data = &unaligned_dump_stack,
|
|
.data = &unaligned_dump_stack,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_DETECT_SOFTLOCKUP
|
|
#ifdef CONFIG_DETECT_SOFTLOCKUP
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "softlockup_panic",
|
|
.procname = "softlockup_panic",
|
|
.data = &softlockup_panic,
|
|
.data = &softlockup_panic,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one,
|
|
.extra2 = &one,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "softlockup_thresh",
|
|
.procname = "softlockup_thresh",
|
|
.data = &softlockup_thresh,
|
|
.data = &softlockup_thresh,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dosoftlockup_thresh,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dosoftlockup_thresh,
|
|
.extra1 = &neg_one,
|
|
.extra1 = &neg_one,
|
|
.extra2 = &sixty,
|
|
.extra2 = &sixty,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_DETECT_HUNG_TASK
|
|
#ifdef CONFIG_DETECT_HUNG_TASK
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "hung_task_panic",
|
|
.procname = "hung_task_panic",
|
|
.data = &sysctl_hung_task_panic,
|
|
.data = &sysctl_hung_task_panic,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one,
|
|
.extra2 = &one,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "hung_task_check_count",
|
|
.procname = "hung_task_check_count",
|
|
.data = &sysctl_hung_task_check_count,
|
|
.data = &sysctl_hung_task_check_count,
|
|
.maxlen = sizeof(unsigned long),
|
|
.maxlen = sizeof(unsigned long),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_doulongvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_doulongvec_minmax,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "hung_task_timeout_secs",
|
|
.procname = "hung_task_timeout_secs",
|
|
.data = &sysctl_hung_task_timeout_secs,
|
|
.data = &sysctl_hung_task_timeout_secs,
|
|
.maxlen = sizeof(unsigned long),
|
|
.maxlen = sizeof(unsigned long),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dohung_task_timeout_secs,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dohung_task_timeout_secs,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "hung_task_warnings",
|
|
.procname = "hung_task_warnings",
|
|
.data = &sysctl_hung_task_warnings,
|
|
.data = &sysctl_hung_task_warnings,
|
|
.maxlen = sizeof(unsigned long),
|
|
.maxlen = sizeof(unsigned long),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_doulongvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_doulongvec_minmax,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_COMPAT
|
|
#ifdef CONFIG_COMPAT
|
|
{
|
|
{
|
|
- .ctl_name = KERN_COMPAT_LOG,
|
|
|
|
.procname = "compat-log",
|
|
.procname = "compat-log",
|
|
.data = &compat_log,
|
|
.data = &compat_log,
|
|
.maxlen = sizeof (int),
|
|
.maxlen = sizeof (int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_RT_MUTEXES
|
|
#ifdef CONFIG_RT_MUTEXES
|
|
{
|
|
{
|
|
- .ctl_name = KERN_MAX_LOCK_DEPTH,
|
|
|
|
.procname = "max_lock_depth",
|
|
.procname = "max_lock_depth",
|
|
.data = &max_lock_depth,
|
|
.data = &max_lock_depth,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "poweroff_cmd",
|
|
.procname = "poweroff_cmd",
|
|
.data = &poweroff_cmd,
|
|
.data = &poweroff_cmd,
|
|
.maxlen = POWEROFF_CMD_PATH_LEN,
|
|
.maxlen = POWEROFF_CMD_PATH_LEN,
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dostring,
|
|
|
|
- .strategy = &sysctl_string,
|
|
|
|
|
|
+ .proc_handler = proc_dostring,
|
|
},
|
|
},
|
|
#ifdef CONFIG_KEYS
|
|
#ifdef CONFIG_KEYS
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "keys",
|
|
.procname = "keys",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = key_sysctls,
|
|
.child = key_sysctls,
|
|
@@ -973,17 +873,15 @@ static struct ctl_table kern_table[] = {
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_RCU_TORTURE_TEST
|
|
#ifdef CONFIG_RCU_TORTURE_TEST
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "rcutorture_runnable",
|
|
.procname = "rcutorture_runnable",
|
|
.data = &rcutorture_runnable,
|
|
.data = &rcutorture_runnable,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_SLOW_WORK
|
|
#ifdef CONFIG_SLOW_WORK
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "slow-work",
|
|
.procname = "slow-work",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = slow_work_sysctls,
|
|
.child = slow_work_sysctls,
|
|
@@ -991,146 +889,127 @@ static struct ctl_table kern_table[] = {
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_PERF_EVENTS
|
|
#ifdef CONFIG_PERF_EVENTS
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "perf_event_paranoid",
|
|
.procname = "perf_event_paranoid",
|
|
.data = &sysctl_perf_event_paranoid,
|
|
.data = &sysctl_perf_event_paranoid,
|
|
.maxlen = sizeof(sysctl_perf_event_paranoid),
|
|
.maxlen = sizeof(sysctl_perf_event_paranoid),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "perf_event_mlock_kb",
|
|
.procname = "perf_event_mlock_kb",
|
|
.data = &sysctl_perf_event_mlock,
|
|
.data = &sysctl_perf_event_mlock,
|
|
.maxlen = sizeof(sysctl_perf_event_mlock),
|
|
.maxlen = sizeof(sysctl_perf_event_mlock),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "perf_event_max_sample_rate",
|
|
.procname = "perf_event_max_sample_rate",
|
|
.data = &sysctl_perf_event_sample_rate,
|
|
.data = &sysctl_perf_event_sample_rate,
|
|
.maxlen = sizeof(sysctl_perf_event_sample_rate),
|
|
.maxlen = sizeof(sysctl_perf_event_sample_rate),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_KMEMCHECK
|
|
#ifdef CONFIG_KMEMCHECK
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "kmemcheck",
|
|
.procname = "kmemcheck",
|
|
.data = &kmemcheck_enabled,
|
|
.data = &kmemcheck_enabled,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_BLOCK
|
|
#ifdef CONFIG_BLOCK
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "blk_iopoll",
|
|
.procname = "blk_iopoll",
|
|
.data = &blk_iopoll_enabled,
|
|
.data = &blk_iopoll_enabled,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
/*
|
|
/*
|
|
* NOTE: do not add new entries to this table unless you have read
|
|
* NOTE: do not add new entries to this table unless you have read
|
|
* Documentation/sysctl/ctl_unnumbered.txt
|
|
* Documentation/sysctl/ctl_unnumbered.txt
|
|
*/
|
|
*/
|
|
- { .ctl_name = 0 }
|
|
|
|
|
|
+ { }
|
|
};
|
|
};
|
|
|
|
|
|
static struct ctl_table vm_table[] = {
|
|
static struct ctl_table vm_table[] = {
|
|
{
|
|
{
|
|
- .ctl_name = VM_OVERCOMMIT_MEMORY,
|
|
|
|
.procname = "overcommit_memory",
|
|
.procname = "overcommit_memory",
|
|
.data = &sysctl_overcommit_memory,
|
|
.data = &sysctl_overcommit_memory,
|
|
.maxlen = sizeof(sysctl_overcommit_memory),
|
|
.maxlen = sizeof(sysctl_overcommit_memory),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_PANIC_ON_OOM,
|
|
|
|
.procname = "panic_on_oom",
|
|
.procname = "panic_on_oom",
|
|
.data = &sysctl_panic_on_oom,
|
|
.data = &sysctl_panic_on_oom,
|
|
.maxlen = sizeof(sysctl_panic_on_oom),
|
|
.maxlen = sizeof(sysctl_panic_on_oom),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "oom_kill_allocating_task",
|
|
.procname = "oom_kill_allocating_task",
|
|
.data = &sysctl_oom_kill_allocating_task,
|
|
.data = &sysctl_oom_kill_allocating_task,
|
|
.maxlen = sizeof(sysctl_oom_kill_allocating_task),
|
|
.maxlen = sizeof(sysctl_oom_kill_allocating_task),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "oom_dump_tasks",
|
|
.procname = "oom_dump_tasks",
|
|
.data = &sysctl_oom_dump_tasks,
|
|
.data = &sysctl_oom_dump_tasks,
|
|
.maxlen = sizeof(sysctl_oom_dump_tasks),
|
|
.maxlen = sizeof(sysctl_oom_dump_tasks),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_OVERCOMMIT_RATIO,
|
|
|
|
.procname = "overcommit_ratio",
|
|
.procname = "overcommit_ratio",
|
|
.data = &sysctl_overcommit_ratio,
|
|
.data = &sysctl_overcommit_ratio,
|
|
.maxlen = sizeof(sysctl_overcommit_ratio),
|
|
.maxlen = sizeof(sysctl_overcommit_ratio),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_PAGE_CLUSTER,
|
|
|
|
.procname = "page-cluster",
|
|
.procname = "page-cluster",
|
|
.data = &page_cluster,
|
|
.data = &page_cluster,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_DIRTY_BACKGROUND,
|
|
|
|
.procname = "dirty_background_ratio",
|
|
.procname = "dirty_background_ratio",
|
|
.data = &dirty_background_ratio,
|
|
.data = &dirty_background_ratio,
|
|
.maxlen = sizeof(dirty_background_ratio),
|
|
.maxlen = sizeof(dirty_background_ratio),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &dirty_background_ratio_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = dirty_background_ratio_handler,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one_hundred,
|
|
.extra2 = &one_hundred,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "dirty_background_bytes",
|
|
.procname = "dirty_background_bytes",
|
|
.data = &dirty_background_bytes,
|
|
.data = &dirty_background_bytes,
|
|
.maxlen = sizeof(dirty_background_bytes),
|
|
.maxlen = sizeof(dirty_background_bytes),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &dirty_background_bytes_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = dirty_background_bytes_handler,
|
|
.extra1 = &one_ul,
|
|
.extra1 = &one_ul,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_DIRTY_RATIO,
|
|
|
|
.procname = "dirty_ratio",
|
|
.procname = "dirty_ratio",
|
|
.data = &vm_dirty_ratio,
|
|
.data = &vm_dirty_ratio,
|
|
.maxlen = sizeof(vm_dirty_ratio),
|
|
.maxlen = sizeof(vm_dirty_ratio),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &dirty_ratio_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = dirty_ratio_handler,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one_hundred,
|
|
.extra2 = &one_hundred,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "dirty_bytes",
|
|
.procname = "dirty_bytes",
|
|
.data = &vm_dirty_bytes,
|
|
.data = &vm_dirty_bytes,
|
|
.maxlen = sizeof(vm_dirty_bytes),
|
|
.maxlen = sizeof(vm_dirty_bytes),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &dirty_bytes_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = dirty_bytes_handler,
|
|
.extra1 = &dirty_bytes_min,
|
|
.extra1 = &dirty_bytes_min,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
@@ -1138,31 +1017,28 @@ static struct ctl_table vm_table[] = {
|
|
.data = &dirty_writeback_interval,
|
|
.data = &dirty_writeback_interval,
|
|
.maxlen = sizeof(dirty_writeback_interval),
|
|
.maxlen = sizeof(dirty_writeback_interval),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &dirty_writeback_centisecs_handler,
|
|
|
|
|
|
+ .proc_handler = dirty_writeback_centisecs_handler,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
.procname = "dirty_expire_centisecs",
|
|
.procname = "dirty_expire_centisecs",
|
|
.data = &dirty_expire_interval,
|
|
.data = &dirty_expire_interval,
|
|
.maxlen = sizeof(dirty_expire_interval),
|
|
.maxlen = sizeof(dirty_expire_interval),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_NR_PDFLUSH_THREADS,
|
|
|
|
.procname = "nr_pdflush_threads",
|
|
.procname = "nr_pdflush_threads",
|
|
.data = &nr_pdflush_threads,
|
|
.data = &nr_pdflush_threads,
|
|
.maxlen = sizeof nr_pdflush_threads,
|
|
.maxlen = sizeof nr_pdflush_threads,
|
|
.mode = 0444 /* read-only*/,
|
|
.mode = 0444 /* read-only*/,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_SWAPPINESS,
|
|
|
|
.procname = "swappiness",
|
|
.procname = "swappiness",
|
|
.data = &vm_swappiness,
|
|
.data = &vm_swappiness,
|
|
.maxlen = sizeof(vm_swappiness),
|
|
.maxlen = sizeof(vm_swappiness),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one_hundred,
|
|
.extra2 = &one_hundred,
|
|
},
|
|
},
|
|
@@ -1172,255 +1048,213 @@ static struct ctl_table vm_table[] = {
|
|
.data = NULL,
|
|
.data = NULL,
|
|
.maxlen = sizeof(unsigned long),
|
|
.maxlen = sizeof(unsigned long),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &hugetlb_sysctl_handler,
|
|
|
|
|
|
+ .proc_handler = hugetlb_sysctl_handler,
|
|
.extra1 = (void *)&hugetlb_zero,
|
|
.extra1 = (void *)&hugetlb_zero,
|
|
.extra2 = (void *)&hugetlb_infinity,
|
|
.extra2 = (void *)&hugetlb_infinity,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_HUGETLB_GROUP,
|
|
|
|
.procname = "hugetlb_shm_group",
|
|
.procname = "hugetlb_shm_group",
|
|
.data = &sysctl_hugetlb_shm_group,
|
|
.data = &sysctl_hugetlb_shm_group,
|
|
.maxlen = sizeof(gid_t),
|
|
.maxlen = sizeof(gid_t),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "hugepages_treat_as_movable",
|
|
.procname = "hugepages_treat_as_movable",
|
|
.data = &hugepages_treat_as_movable,
|
|
.data = &hugepages_treat_as_movable,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &hugetlb_treat_movable_handler,
|
|
|
|
|
|
+ .proc_handler = hugetlb_treat_movable_handler,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "nr_overcommit_hugepages",
|
|
.procname = "nr_overcommit_hugepages",
|
|
.data = NULL,
|
|
.data = NULL,
|
|
.maxlen = sizeof(unsigned long),
|
|
.maxlen = sizeof(unsigned long),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &hugetlb_overcommit_handler,
|
|
|
|
|
|
+ .proc_handler = hugetlb_overcommit_handler,
|
|
.extra1 = (void *)&hugetlb_zero,
|
|
.extra1 = (void *)&hugetlb_zero,
|
|
.extra2 = (void *)&hugetlb_infinity,
|
|
.extra2 = (void *)&hugetlb_infinity,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = VM_LOWMEM_RESERVE_RATIO,
|
|
|
|
.procname = "lowmem_reserve_ratio",
|
|
.procname = "lowmem_reserve_ratio",
|
|
.data = &sysctl_lowmem_reserve_ratio,
|
|
.data = &sysctl_lowmem_reserve_ratio,
|
|
.maxlen = sizeof(sysctl_lowmem_reserve_ratio),
|
|
.maxlen = sizeof(sysctl_lowmem_reserve_ratio),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &lowmem_reserve_ratio_sysctl_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = lowmem_reserve_ratio_sysctl_handler,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_DROP_PAGECACHE,
|
|
|
|
.procname = "drop_caches",
|
|
.procname = "drop_caches",
|
|
.data = &sysctl_drop_caches,
|
|
.data = &sysctl_drop_caches,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
.proc_handler = drop_caches_sysctl_handler,
|
|
.proc_handler = drop_caches_sysctl_handler,
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_MIN_FREE_KBYTES,
|
|
|
|
.procname = "min_free_kbytes",
|
|
.procname = "min_free_kbytes",
|
|
.data = &min_free_kbytes,
|
|
.data = &min_free_kbytes,
|
|
.maxlen = sizeof(min_free_kbytes),
|
|
.maxlen = sizeof(min_free_kbytes),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &min_free_kbytes_sysctl_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = min_free_kbytes_sysctl_handler,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_PERCPU_PAGELIST_FRACTION,
|
|
|
|
.procname = "percpu_pagelist_fraction",
|
|
.procname = "percpu_pagelist_fraction",
|
|
.data = &percpu_pagelist_fraction,
|
|
.data = &percpu_pagelist_fraction,
|
|
.maxlen = sizeof(percpu_pagelist_fraction),
|
|
.maxlen = sizeof(percpu_pagelist_fraction),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &percpu_pagelist_fraction_sysctl_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = percpu_pagelist_fraction_sysctl_handler,
|
|
.extra1 = &min_percpu_pagelist_fract,
|
|
.extra1 = &min_percpu_pagelist_fract,
|
|
},
|
|
},
|
|
#ifdef CONFIG_MMU
|
|
#ifdef CONFIG_MMU
|
|
{
|
|
{
|
|
- .ctl_name = VM_MAX_MAP_COUNT,
|
|
|
|
.procname = "max_map_count",
|
|
.procname = "max_map_count",
|
|
.data = &sysctl_max_map_count,
|
|
.data = &sysctl_max_map_count,
|
|
.maxlen = sizeof(sysctl_max_map_count),
|
|
.maxlen = sizeof(sysctl_max_map_count),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec
|
|
|
|
|
|
+ .proc_handler = proc_dointvec
|
|
},
|
|
},
|
|
#else
|
|
#else
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "nr_trim_pages",
|
|
.procname = "nr_trim_pages",
|
|
.data = &sysctl_nr_trim_pages,
|
|
.data = &sysctl_nr_trim_pages,
|
|
.maxlen = sizeof(sysctl_nr_trim_pages),
|
|
.maxlen = sizeof(sysctl_nr_trim_pages),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = VM_LAPTOP_MODE,
|
|
|
|
.procname = "laptop_mode",
|
|
.procname = "laptop_mode",
|
|
.data = &laptop_mode,
|
|
.data = &laptop_mode,
|
|
.maxlen = sizeof(laptop_mode),
|
|
.maxlen = sizeof(laptop_mode),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_jiffies,
|
|
|
|
- .strategy = &sysctl_jiffies,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_jiffies,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_BLOCK_DUMP,
|
|
|
|
.procname = "block_dump",
|
|
.procname = "block_dump",
|
|
.data = &block_dump,
|
|
.data = &block_dump,
|
|
.maxlen = sizeof(block_dump),
|
|
.maxlen = sizeof(block_dump),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_VFS_CACHE_PRESSURE,
|
|
|
|
.procname = "vfs_cache_pressure",
|
|
.procname = "vfs_cache_pressure",
|
|
.data = &sysctl_vfs_cache_pressure,
|
|
.data = &sysctl_vfs_cache_pressure,
|
|
.maxlen = sizeof(sysctl_vfs_cache_pressure),
|
|
.maxlen = sizeof(sysctl_vfs_cache_pressure),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
},
|
|
},
|
|
#ifdef HAVE_ARCH_PICK_MMAP_LAYOUT
|
|
#ifdef HAVE_ARCH_PICK_MMAP_LAYOUT
|
|
{
|
|
{
|
|
- .ctl_name = VM_LEGACY_VA_LAYOUT,
|
|
|
|
.procname = "legacy_va_layout",
|
|
.procname = "legacy_va_layout",
|
|
.data = &sysctl_legacy_va_layout,
|
|
.data = &sysctl_legacy_va_layout,
|
|
.maxlen = sizeof(sysctl_legacy_va_layout),
|
|
.maxlen = sizeof(sysctl_legacy_va_layout),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_NUMA
|
|
#ifdef CONFIG_NUMA
|
|
{
|
|
{
|
|
- .ctl_name = VM_ZONE_RECLAIM_MODE,
|
|
|
|
.procname = "zone_reclaim_mode",
|
|
.procname = "zone_reclaim_mode",
|
|
.data = &zone_reclaim_mode,
|
|
.data = &zone_reclaim_mode,
|
|
.maxlen = sizeof(zone_reclaim_mode),
|
|
.maxlen = sizeof(zone_reclaim_mode),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_MIN_UNMAPPED,
|
|
|
|
.procname = "min_unmapped_ratio",
|
|
.procname = "min_unmapped_ratio",
|
|
.data = &sysctl_min_unmapped_ratio,
|
|
.data = &sysctl_min_unmapped_ratio,
|
|
.maxlen = sizeof(sysctl_min_unmapped_ratio),
|
|
.maxlen = sizeof(sysctl_min_unmapped_ratio),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &sysctl_min_unmapped_ratio_sysctl_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = sysctl_min_unmapped_ratio_sysctl_handler,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one_hundred,
|
|
.extra2 = &one_hundred,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = VM_MIN_SLAB,
|
|
|
|
.procname = "min_slab_ratio",
|
|
.procname = "min_slab_ratio",
|
|
.data = &sysctl_min_slab_ratio,
|
|
.data = &sysctl_min_slab_ratio,
|
|
.maxlen = sizeof(sysctl_min_slab_ratio),
|
|
.maxlen = sizeof(sysctl_min_slab_ratio),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &sysctl_min_slab_ratio_sysctl_handler,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = sysctl_min_slab_ratio_sysctl_handler,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one_hundred,
|
|
.extra2 = &one_hundred,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_SMP
|
|
#ifdef CONFIG_SMP
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "stat_interval",
|
|
.procname = "stat_interval",
|
|
.data = &sysctl_stat_interval,
|
|
.data = &sysctl_stat_interval,
|
|
.maxlen = sizeof(sysctl_stat_interval),
|
|
.maxlen = sizeof(sysctl_stat_interval),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_jiffies,
|
|
|
|
- .strategy = &sysctl_jiffies,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_jiffies,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "mmap_min_addr",
|
|
.procname = "mmap_min_addr",
|
|
.data = &dac_mmap_min_addr,
|
|
.data = &dac_mmap_min_addr,
|
|
.maxlen = sizeof(unsigned long),
|
|
.maxlen = sizeof(unsigned long),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &mmap_min_addr_handler,
|
|
|
|
|
|
+ .proc_handler = mmap_min_addr_handler,
|
|
},
|
|
},
|
|
#ifdef CONFIG_NUMA
|
|
#ifdef CONFIG_NUMA
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "numa_zonelist_order",
|
|
.procname = "numa_zonelist_order",
|
|
.data = &numa_zonelist_order,
|
|
.data = &numa_zonelist_order,
|
|
.maxlen = NUMA_ZONELIST_ORDER_LEN,
|
|
.maxlen = NUMA_ZONELIST_ORDER_LEN,
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &numa_zonelist_order_handler,
|
|
|
|
- .strategy = &sysctl_string,
|
|
|
|
|
|
+ .proc_handler = numa_zonelist_order_handler,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \
|
|
#if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \
|
|
(defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL))
|
|
(defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL))
|
|
{
|
|
{
|
|
- .ctl_name = VM_VDSO_ENABLED,
|
|
|
|
.procname = "vdso_enabled",
|
|
.procname = "vdso_enabled",
|
|
.data = &vdso_enabled,
|
|
.data = &vdso_enabled,
|
|
.maxlen = sizeof(vdso_enabled),
|
|
.maxlen = sizeof(vdso_enabled),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_HIGHMEM
|
|
#ifdef CONFIG_HIGHMEM
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "highmem_is_dirtyable",
|
|
.procname = "highmem_is_dirtyable",
|
|
.data = &vm_highmem_is_dirtyable,
|
|
.data = &vm_highmem_is_dirtyable,
|
|
.maxlen = sizeof(vm_highmem_is_dirtyable),
|
|
.maxlen = sizeof(vm_highmem_is_dirtyable),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one,
|
|
.extra2 = &one,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "scan_unevictable_pages",
|
|
.procname = "scan_unevictable_pages",
|
|
.data = &scan_unevictable_pages,
|
|
.data = &scan_unevictable_pages,
|
|
.maxlen = sizeof(scan_unevictable_pages),
|
|
.maxlen = sizeof(scan_unevictable_pages),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &scan_unevictable_handler,
|
|
|
|
|
|
+ .proc_handler = scan_unevictable_handler,
|
|
},
|
|
},
|
|
#ifdef CONFIG_MEMORY_FAILURE
|
|
#ifdef CONFIG_MEMORY_FAILURE
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "memory_failure_early_kill",
|
|
.procname = "memory_failure_early_kill",
|
|
.data = &sysctl_memory_failure_early_kill,
|
|
.data = &sysctl_memory_failure_early_kill,
|
|
.maxlen = sizeof(sysctl_memory_failure_early_kill),
|
|
.maxlen = sizeof(sysctl_memory_failure_early_kill),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one,
|
|
.extra2 = &one,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "memory_failure_recovery",
|
|
.procname = "memory_failure_recovery",
|
|
.data = &sysctl_memory_failure_recovery,
|
|
.data = &sysctl_memory_failure_recovery,
|
|
.maxlen = sizeof(sysctl_memory_failure_recovery),
|
|
.maxlen = sizeof(sysctl_memory_failure_recovery),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &one,
|
|
.extra2 = &one,
|
|
},
|
|
},
|
|
@@ -1430,116 +1264,104 @@ static struct ctl_table vm_table[] = {
|
|
* NOTE: do not add new entries to this table unless you have read
|
|
* NOTE: do not add new entries to this table unless you have read
|
|
* Documentation/sysctl/ctl_unnumbered.txt
|
|
* Documentation/sysctl/ctl_unnumbered.txt
|
|
*/
|
|
*/
|
|
- { .ctl_name = 0 }
|
|
|
|
|
|
+ { }
|
|
};
|
|
};
|
|
|
|
|
|
#if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE)
|
|
#if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE)
|
|
static struct ctl_table binfmt_misc_table[] = {
|
|
static struct ctl_table binfmt_misc_table[] = {
|
|
- { .ctl_name = 0 }
|
|
|
|
|
|
+ { }
|
|
};
|
|
};
|
|
#endif
|
|
#endif
|
|
|
|
|
|
static struct ctl_table fs_table[] = {
|
|
static struct ctl_table fs_table[] = {
|
|
{
|
|
{
|
|
- .ctl_name = FS_NRINODE,
|
|
|
|
.procname = "inode-nr",
|
|
.procname = "inode-nr",
|
|
.data = &inodes_stat,
|
|
.data = &inodes_stat,
|
|
.maxlen = 2*sizeof(int),
|
|
.maxlen = 2*sizeof(int),
|
|
.mode = 0444,
|
|
.mode = 0444,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = FS_STATINODE,
|
|
|
|
.procname = "inode-state",
|
|
.procname = "inode-state",
|
|
.data = &inodes_stat,
|
|
.data = &inodes_stat,
|
|
.maxlen = 7*sizeof(int),
|
|
.maxlen = 7*sizeof(int),
|
|
.mode = 0444,
|
|
.mode = 0444,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
.procname = "file-nr",
|
|
.procname = "file-nr",
|
|
.data = &files_stat,
|
|
.data = &files_stat,
|
|
.maxlen = 3*sizeof(int),
|
|
.maxlen = 3*sizeof(int),
|
|
.mode = 0444,
|
|
.mode = 0444,
|
|
- .proc_handler = &proc_nr_files,
|
|
|
|
|
|
+ .proc_handler = proc_nr_files,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = FS_MAXFILE,
|
|
|
|
.procname = "file-max",
|
|
.procname = "file-max",
|
|
.data = &files_stat.max_files,
|
|
.data = &files_stat.max_files,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "nr_open",
|
|
.procname = "nr_open",
|
|
.data = &sysctl_nr_open,
|
|
.data = &sysctl_nr_open,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &sysctl_nr_open_min,
|
|
.extra1 = &sysctl_nr_open_min,
|
|
.extra2 = &sysctl_nr_open_max,
|
|
.extra2 = &sysctl_nr_open_max,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = FS_DENTRY,
|
|
|
|
.procname = "dentry-state",
|
|
.procname = "dentry-state",
|
|
.data = &dentry_stat,
|
|
.data = &dentry_stat,
|
|
.maxlen = 6*sizeof(int),
|
|
.maxlen = 6*sizeof(int),
|
|
.mode = 0444,
|
|
.mode = 0444,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = FS_OVERFLOWUID,
|
|
|
|
.procname = "overflowuid",
|
|
.procname = "overflowuid",
|
|
.data = &fs_overflowuid,
|
|
.data = &fs_overflowuid,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &minolduid,
|
|
.extra1 = &minolduid,
|
|
.extra2 = &maxolduid,
|
|
.extra2 = &maxolduid,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- .ctl_name = FS_OVERFLOWGID,
|
|
|
|
.procname = "overflowgid",
|
|
.procname = "overflowgid",
|
|
.data = &fs_overflowgid,
|
|
.data = &fs_overflowgid,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &minolduid,
|
|
.extra1 = &minolduid,
|
|
.extra2 = &maxolduid,
|
|
.extra2 = &maxolduid,
|
|
},
|
|
},
|
|
#ifdef CONFIG_FILE_LOCKING
|
|
#ifdef CONFIG_FILE_LOCKING
|
|
{
|
|
{
|
|
- .ctl_name = FS_LEASES,
|
|
|
|
.procname = "leases-enable",
|
|
.procname = "leases-enable",
|
|
.data = &leases_enable,
|
|
.data = &leases_enable,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_DNOTIFY
|
|
#ifdef CONFIG_DNOTIFY
|
|
{
|
|
{
|
|
- .ctl_name = FS_DIR_NOTIFY,
|
|
|
|
.procname = "dir-notify-enable",
|
|
.procname = "dir-notify-enable",
|
|
.data = &dir_notify_enable,
|
|
.data = &dir_notify_enable,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_MMU
|
|
#ifdef CONFIG_MMU
|
|
#ifdef CONFIG_FILE_LOCKING
|
|
#ifdef CONFIG_FILE_LOCKING
|
|
{
|
|
{
|
|
- .ctl_name = FS_LEASE_TIME,
|
|
|
|
.procname = "lease-break-time",
|
|
.procname = "lease-break-time",
|
|
.data = &lease_break_time,
|
|
.data = &lease_break_time,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec,
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_AIO
|
|
#ifdef CONFIG_AIO
|
|
@@ -1548,19 +1370,18 @@ static struct ctl_table fs_table[] = {
|
|
.data = &aio_nr,
|
|
.data = &aio_nr,
|
|
.maxlen = sizeof(aio_nr),
|
|
.maxlen = sizeof(aio_nr),
|
|
.mode = 0444,
|
|
.mode = 0444,
|
|
- .proc_handler = &proc_doulongvec_minmax,
|
|
|
|
|
|
+ .proc_handler = proc_doulongvec_minmax,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
.procname = "aio-max-nr",
|
|
.procname = "aio-max-nr",
|
|
.data = &aio_max_nr,
|
|
.data = &aio_max_nr,
|
|
.maxlen = sizeof(aio_max_nr),
|
|
.maxlen = sizeof(aio_max_nr),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_doulongvec_minmax,
|
|
|
|
|
|
+ .proc_handler = proc_doulongvec_minmax,
|
|
},
|
|
},
|
|
#endif /* CONFIG_AIO */
|
|
#endif /* CONFIG_AIO */
|
|
#ifdef CONFIG_INOTIFY_USER
|
|
#ifdef CONFIG_INOTIFY_USER
|
|
{
|
|
{
|
|
- .ctl_name = FS_INOTIFY,
|
|
|
|
.procname = "inotify",
|
|
.procname = "inotify",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = inotify_table,
|
|
.child = inotify_table,
|
|
@@ -1575,19 +1396,16 @@ static struct ctl_table fs_table[] = {
|
|
#endif
|
|
#endif
|
|
#endif
|
|
#endif
|
|
{
|
|
{
|
|
- .ctl_name = KERN_SETUID_DUMPABLE,
|
|
|
|
.procname = "suid_dumpable",
|
|
.procname = "suid_dumpable",
|
|
.data = &suid_dumpable,
|
|
.data = &suid_dumpable,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = &proc_dointvec_minmax,
|
|
|
|
- .strategy = &sysctl_intvec,
|
|
|
|
|
|
+ .proc_handler = proc_dointvec_minmax,
|
|
.extra1 = &zero,
|
|
.extra1 = &zero,
|
|
.extra2 = &two,
|
|
.extra2 = &two,
|
|
},
|
|
},
|
|
#if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE)
|
|
#if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE)
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "binfmt_misc",
|
|
.procname = "binfmt_misc",
|
|
.mode = 0555,
|
|
.mode = 0555,
|
|
.child = binfmt_misc_table,
|
|
.child = binfmt_misc_table,
|
|
@@ -1597,13 +1415,12 @@ static struct ctl_table fs_table[] = {
|
|
* NOTE: do not add new entries to this table unless you have read
|
|
* NOTE: do not add new entries to this table unless you have read
|
|
* Documentation/sysctl/ctl_unnumbered.txt
|
|
* Documentation/sysctl/ctl_unnumbered.txt
|
|
*/
|
|
*/
|
|
- { .ctl_name = 0 }
|
|
|
|
|
|
+ { }
|
|
};
|
|
};
|
|
|
|
|
|
static struct ctl_table debug_table[] = {
|
|
static struct ctl_table debug_table[] = {
|
|
#if defined(CONFIG_X86) || defined(CONFIG_PPC)
|
|
#if defined(CONFIG_X86) || defined(CONFIG_PPC)
|
|
{
|
|
{
|
|
- .ctl_name = CTL_UNNUMBERED,
|
|
|
|
.procname = "exception-trace",
|
|
.procname = "exception-trace",
|
|
.data = &show_unhandled_signals,
|
|
.data = &show_unhandled_signals,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
@@ -1611,11 +1428,11 @@ static struct ctl_table debug_table[] = {
|
|
.proc_handler = proc_dointvec
|
|
.proc_handler = proc_dointvec
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
- { .ctl_name = 0 }
|
|
|
|
|
|
+ { }
|
|
};
|
|
};
|
|
|
|
|
|
static struct ctl_table dev_table[] = {
|
|
static struct ctl_table dev_table[] = {
|
|
- { .ctl_name = 0 }
|
|
|
|
|
|
+ { }
|
|
};
|
|
};
|
|
|
|
|
|
static DEFINE_SPINLOCK(sysctl_lock);
|
|
static DEFINE_SPINLOCK(sysctl_lock);
|
|
@@ -1769,122 +1586,6 @@ void register_sysctl_root(struct ctl_table_root *root)
|
|
spin_unlock(&sysctl_lock);
|
|
spin_unlock(&sysctl_lock);
|
|
}
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_SYSCTL_SYSCALL
|
|
|
|
-/* Perform the actual read/write of a sysctl table entry. */
|
|
|
|
-static int do_sysctl_strategy(struct ctl_table_root *root,
|
|
|
|
- struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- int op = 0, rc;
|
|
|
|
-
|
|
|
|
- if (oldval)
|
|
|
|
- op |= MAY_READ;
|
|
|
|
- if (newval)
|
|
|
|
- op |= MAY_WRITE;
|
|
|
|
- if (sysctl_perm(root, table, op))
|
|
|
|
- return -EPERM;
|
|
|
|
-
|
|
|
|
- if (table->strategy) {
|
|
|
|
- rc = table->strategy(table, oldval, oldlenp, newval, newlen);
|
|
|
|
- if (rc < 0)
|
|
|
|
- return rc;
|
|
|
|
- if (rc > 0)
|
|
|
|
- return 0;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /* If there is no strategy routine, or if the strategy returns
|
|
|
|
- * zero, proceed with automatic r/w */
|
|
|
|
- if (table->data && table->maxlen) {
|
|
|
|
- rc = sysctl_data(table, oldval, oldlenp, newval, newlen);
|
|
|
|
- if (rc < 0)
|
|
|
|
- return rc;
|
|
|
|
- }
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static int parse_table(int __user *name, int nlen,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen,
|
|
|
|
- struct ctl_table_root *root,
|
|
|
|
- struct ctl_table *table)
|
|
|
|
-{
|
|
|
|
- int n;
|
|
|
|
-repeat:
|
|
|
|
- if (!nlen)
|
|
|
|
- return -ENOTDIR;
|
|
|
|
- if (get_user(n, name))
|
|
|
|
- return -EFAULT;
|
|
|
|
- for ( ; table->ctl_name || table->procname; table++) {
|
|
|
|
- if (!table->ctl_name)
|
|
|
|
- continue;
|
|
|
|
- if (n == table->ctl_name) {
|
|
|
|
- int error;
|
|
|
|
- if (table->child) {
|
|
|
|
- if (sysctl_perm(root, table, MAY_EXEC))
|
|
|
|
- return -EPERM;
|
|
|
|
- name++;
|
|
|
|
- nlen--;
|
|
|
|
- table = table->child;
|
|
|
|
- goto repeat;
|
|
|
|
- }
|
|
|
|
- error = do_sysctl_strategy(root, table,
|
|
|
|
- oldval, oldlenp,
|
|
|
|
- newval, newlen);
|
|
|
|
- return error;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return -ENOTDIR;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int do_sysctl(int __user *name, int nlen, void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- struct ctl_table_header *head;
|
|
|
|
- int error = -ENOTDIR;
|
|
|
|
-
|
|
|
|
- if (nlen <= 0 || nlen >= CTL_MAXNAME)
|
|
|
|
- return -ENOTDIR;
|
|
|
|
- if (oldval) {
|
|
|
|
- int old_len;
|
|
|
|
- if (!oldlenp || get_user(old_len, oldlenp))
|
|
|
|
- return -EFAULT;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- for (head = sysctl_head_next(NULL); head;
|
|
|
|
- head = sysctl_head_next(head)) {
|
|
|
|
- error = parse_table(name, nlen, oldval, oldlenp,
|
|
|
|
- newval, newlen,
|
|
|
|
- head->root, head->ctl_table);
|
|
|
|
- if (error != -ENOTDIR) {
|
|
|
|
- sysctl_head_finish(head);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return error;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
|
|
|
|
-{
|
|
|
|
- struct __sysctl_args tmp;
|
|
|
|
- int error;
|
|
|
|
-
|
|
|
|
- if (copy_from_user(&tmp, args, sizeof(tmp)))
|
|
|
|
- return -EFAULT;
|
|
|
|
-
|
|
|
|
- error = deprecated_sysctl_warning(&tmp);
|
|
|
|
- if (error)
|
|
|
|
- goto out;
|
|
|
|
-
|
|
|
|
- lock_kernel();
|
|
|
|
- error = do_sysctl(tmp.name, tmp.nlen, tmp.oldval, tmp.oldlenp,
|
|
|
|
- tmp.newval, tmp.newlen);
|
|
|
|
- unlock_kernel();
|
|
|
|
-out:
|
|
|
|
- return error;
|
|
|
|
-}
|
|
|
|
-#endif /* CONFIG_SYSCTL_SYSCALL */
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* sysctl_perm does NOT grant the superuser all rights automatically, because
|
|
* sysctl_perm does NOT grant the superuser all rights automatically, because
|
|
* some sysctl variables are readonly even to root.
|
|
* some sysctl variables are readonly even to root.
|
|
@@ -1920,7 +1621,7 @@ int sysctl_perm(struct ctl_table_root *root, struct ctl_table *table, int op)
|
|
|
|
|
|
static void sysctl_set_parent(struct ctl_table *parent, struct ctl_table *table)
|
|
static void sysctl_set_parent(struct ctl_table *parent, struct ctl_table *table)
|
|
{
|
|
{
|
|
- for (; table->ctl_name || table->procname; table++) {
|
|
|
|
|
|
+ for (; table->procname; table++) {
|
|
table->parent = parent;
|
|
table->parent = parent;
|
|
if (table->child)
|
|
if (table->child)
|
|
sysctl_set_parent(table, table->child);
|
|
sysctl_set_parent(table, table->child);
|
|
@@ -1952,11 +1653,11 @@ static struct ctl_table *is_branch_in(struct ctl_table *branch,
|
|
return NULL;
|
|
return NULL;
|
|
|
|
|
|
/* ... and nothing else */
|
|
/* ... and nothing else */
|
|
- if (branch[1].procname || branch[1].ctl_name)
|
|
|
|
|
|
+ if (branch[1].procname)
|
|
return NULL;
|
|
return NULL;
|
|
|
|
|
|
/* table should contain subdirectory with the same name */
|
|
/* table should contain subdirectory with the same name */
|
|
- for (p = table; p->procname || p->ctl_name; p++) {
|
|
|
|
|
|
+ for (p = table; p->procname; p++) {
|
|
if (!p->child)
|
|
if (!p->child)
|
|
continue;
|
|
continue;
|
|
if (p->procname && strcmp(p->procname, s) == 0)
|
|
if (p->procname && strcmp(p->procname, s) == 0)
|
|
@@ -2001,9 +1702,6 @@ static void try_attach(struct ctl_table_header *p, struct ctl_table_header *q)
|
|
*
|
|
*
|
|
* The members of the &struct ctl_table structure are used as follows:
|
|
* The members of the &struct ctl_table structure are used as follows:
|
|
*
|
|
*
|
|
- * ctl_name - This is the numeric sysctl value used by sysctl(2). The number
|
|
|
|
- * must be unique within that level of sysctl
|
|
|
|
- *
|
|
|
|
* procname - the name of the sysctl file under /proc/sys. Set to %NULL to not
|
|
* procname - the name of the sysctl file under /proc/sys. Set to %NULL to not
|
|
* enter a sysctl file
|
|
* enter a sysctl file
|
|
*
|
|
*
|
|
@@ -2018,8 +1716,6 @@ static void try_attach(struct ctl_table_header *p, struct ctl_table_header *q)
|
|
*
|
|
*
|
|
* proc_handler - the text handler routine (described below)
|
|
* proc_handler - the text handler routine (described below)
|
|
*
|
|
*
|
|
- * strategy - the strategy routine (described below)
|
|
|
|
- *
|
|
|
|
* de - for internal use by the sysctl routines
|
|
* de - for internal use by the sysctl routines
|
|
*
|
|
*
|
|
* extra1, extra2 - extra pointers usable by the proc handler routines
|
|
* extra1, extra2 - extra pointers usable by the proc handler routines
|
|
@@ -2032,19 +1728,6 @@ static void try_attach(struct ctl_table_header *p, struct ctl_table_header *q)
|
|
* struct enable minimal validation of the values being written to be
|
|
* struct enable minimal validation of the values being written to be
|
|
* performed, and the mode field allows minimal authentication.
|
|
* performed, and the mode field allows minimal authentication.
|
|
*
|
|
*
|
|
- * More sophisticated management can be enabled by the provision of a
|
|
|
|
- * strategy routine with the table entry. This will be called before
|
|
|
|
- * any automatic read or write of the data is performed.
|
|
|
|
- *
|
|
|
|
- * The strategy routine may return
|
|
|
|
- *
|
|
|
|
- * < 0 - Error occurred (error is passed to user process)
|
|
|
|
- *
|
|
|
|
- * 0 - OK - proceed with automatic read or write.
|
|
|
|
- *
|
|
|
|
- * > 0 - OK - read or write has been done by the strategy routine, so
|
|
|
|
- * return immediately.
|
|
|
|
- *
|
|
|
|
* There must be a proc_handler routine for any terminal nodes
|
|
* There must be a proc_handler routine for any terminal nodes
|
|
* mirrored under /proc/sys (non-terminals are handled by a built-in
|
|
* mirrored under /proc/sys (non-terminals are handled by a built-in
|
|
* directory handler). Several default handlers are available to
|
|
* directory handler). Several default handlers are available to
|
|
@@ -2071,13 +1754,13 @@ struct ctl_table_header *__register_sysctl_paths(
|
|
struct ctl_table_set *set;
|
|
struct ctl_table_set *set;
|
|
|
|
|
|
/* Count the path components */
|
|
/* Count the path components */
|
|
- for (npath = 0; path[npath].ctl_name || path[npath].procname; ++npath)
|
|
|
|
|
|
+ for (npath = 0; path[npath].procname; ++npath)
|
|
;
|
|
;
|
|
|
|
|
|
/*
|
|
/*
|
|
* For each path component, allocate a 2-element ctl_table array.
|
|
* For each path component, allocate a 2-element ctl_table array.
|
|
* The first array element will be filled with the sysctl entry
|
|
* The first array element will be filled with the sysctl entry
|
|
- * for this, the second will be the sentinel (ctl_name == 0).
|
|
|
|
|
|
+ * for this, the second will be the sentinel (procname == 0).
|
|
*
|
|
*
|
|
* We allocate everything in one go so that we don't have to
|
|
* We allocate everything in one go so that we don't have to
|
|
* worry about freeing additional memory in unregister_sysctl_table.
|
|
* worry about freeing additional memory in unregister_sysctl_table.
|
|
@@ -2094,7 +1777,6 @@ struct ctl_table_header *__register_sysctl_paths(
|
|
for (n = 0; n < npath; ++n, ++path) {
|
|
for (n = 0; n < npath; ++n, ++path) {
|
|
/* Copy the procname */
|
|
/* Copy the procname */
|
|
new->procname = path->procname;
|
|
new->procname = path->procname;
|
|
- new->ctl_name = path->ctl_name;
|
|
|
|
new->mode = 0555;
|
|
new->mode = 0555;
|
|
|
|
|
|
*prevp = new;
|
|
*prevp = new;
|
|
@@ -2956,286 +2638,6 @@ int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int write,
|
|
|
|
|
|
#endif /* CONFIG_PROC_FS */
|
|
#endif /* CONFIG_PROC_FS */
|
|
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_SYSCTL_SYSCALL
|
|
|
|
-/*
|
|
|
|
- * General sysctl support routines
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
-/* The generic sysctl data routine (used if no strategy routine supplied) */
|
|
|
|
-int sysctl_data(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- size_t len;
|
|
|
|
-
|
|
|
|
- /* Get out of I don't have a variable */
|
|
|
|
- if (!table->data || !table->maxlen)
|
|
|
|
- return -ENOTDIR;
|
|
|
|
-
|
|
|
|
- if (oldval && oldlenp) {
|
|
|
|
- if (get_user(len, oldlenp))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (len) {
|
|
|
|
- if (len > table->maxlen)
|
|
|
|
- len = table->maxlen;
|
|
|
|
- if (copy_to_user(oldval, table->data, len))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (put_user(len, oldlenp))
|
|
|
|
- return -EFAULT;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (newval && newlen) {
|
|
|
|
- if (newlen > table->maxlen)
|
|
|
|
- newlen = table->maxlen;
|
|
|
|
-
|
|
|
|
- if (copy_from_user(table->data, newval, newlen))
|
|
|
|
- return -EFAULT;
|
|
|
|
- }
|
|
|
|
- return 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/* The generic string strategy routine: */
|
|
|
|
-int sysctl_string(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- if (!table->data || !table->maxlen)
|
|
|
|
- return -ENOTDIR;
|
|
|
|
-
|
|
|
|
- if (oldval && oldlenp) {
|
|
|
|
- size_t bufsize;
|
|
|
|
- if (get_user(bufsize, oldlenp))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (bufsize) {
|
|
|
|
- size_t len = strlen(table->data), copied;
|
|
|
|
-
|
|
|
|
- /* This shouldn't trigger for a well-formed sysctl */
|
|
|
|
- if (len > table->maxlen)
|
|
|
|
- len = table->maxlen;
|
|
|
|
-
|
|
|
|
- /* Copy up to a max of bufsize-1 bytes of the string */
|
|
|
|
- copied = (len >= bufsize) ? bufsize - 1 : len;
|
|
|
|
-
|
|
|
|
- if (copy_to_user(oldval, table->data, copied) ||
|
|
|
|
- put_user(0, (char __user *)(oldval + copied)))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (put_user(len, oldlenp))
|
|
|
|
- return -EFAULT;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (newval && newlen) {
|
|
|
|
- size_t len = newlen;
|
|
|
|
- if (len > table->maxlen)
|
|
|
|
- len = table->maxlen;
|
|
|
|
- if(copy_from_user(table->data, newval, len))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (len == table->maxlen)
|
|
|
|
- len--;
|
|
|
|
- ((char *) table->data)[len] = 0;
|
|
|
|
- }
|
|
|
|
- return 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/*
|
|
|
|
- * This function makes sure that all of the integers in the vector
|
|
|
|
- * are between the minimum and maximum values given in the arrays
|
|
|
|
- * table->extra1 and table->extra2, respectively.
|
|
|
|
- */
|
|
|
|
-int sysctl_intvec(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
-
|
|
|
|
- if (newval && newlen) {
|
|
|
|
- int __user *vec = (int __user *) newval;
|
|
|
|
- int *min = (int *) table->extra1;
|
|
|
|
- int *max = (int *) table->extra2;
|
|
|
|
- size_t length;
|
|
|
|
- int i;
|
|
|
|
-
|
|
|
|
- if (newlen % sizeof(int) != 0)
|
|
|
|
- return -EINVAL;
|
|
|
|
-
|
|
|
|
- if (!table->extra1 && !table->extra2)
|
|
|
|
- return 0;
|
|
|
|
-
|
|
|
|
- if (newlen > table->maxlen)
|
|
|
|
- newlen = table->maxlen;
|
|
|
|
- length = newlen / sizeof(int);
|
|
|
|
-
|
|
|
|
- for (i = 0; i < length; i++) {
|
|
|
|
- int value;
|
|
|
|
- if (get_user(value, vec + i))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (min && value < min[i])
|
|
|
|
- return -EINVAL;
|
|
|
|
- if (max && value > max[i])
|
|
|
|
- return -EINVAL;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/* Strategy function to convert jiffies to seconds */
|
|
|
|
-int sysctl_jiffies(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- if (oldval && oldlenp) {
|
|
|
|
- size_t olen;
|
|
|
|
-
|
|
|
|
- if (get_user(olen, oldlenp))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (olen) {
|
|
|
|
- int val;
|
|
|
|
-
|
|
|
|
- if (olen < sizeof(int))
|
|
|
|
- return -EINVAL;
|
|
|
|
-
|
|
|
|
- val = *(int *)(table->data) / HZ;
|
|
|
|
- if (put_user(val, (int __user *)oldval))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (put_user(sizeof(int), oldlenp))
|
|
|
|
- return -EFAULT;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (newval && newlen) {
|
|
|
|
- int new;
|
|
|
|
- if (newlen != sizeof(int))
|
|
|
|
- return -EINVAL;
|
|
|
|
- if (get_user(new, (int __user *)newval))
|
|
|
|
- return -EFAULT;
|
|
|
|
- *(int *)(table->data) = new*HZ;
|
|
|
|
- }
|
|
|
|
- return 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/* Strategy function to convert jiffies to seconds */
|
|
|
|
-int sysctl_ms_jiffies(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- if (oldval && oldlenp) {
|
|
|
|
- size_t olen;
|
|
|
|
-
|
|
|
|
- if (get_user(olen, oldlenp))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (olen) {
|
|
|
|
- int val;
|
|
|
|
-
|
|
|
|
- if (olen < sizeof(int))
|
|
|
|
- return -EINVAL;
|
|
|
|
-
|
|
|
|
- val = jiffies_to_msecs(*(int *)(table->data));
|
|
|
|
- if (put_user(val, (int __user *)oldval))
|
|
|
|
- return -EFAULT;
|
|
|
|
- if (put_user(sizeof(int), oldlenp))
|
|
|
|
- return -EFAULT;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (newval && newlen) {
|
|
|
|
- int new;
|
|
|
|
- if (newlen != sizeof(int))
|
|
|
|
- return -EINVAL;
|
|
|
|
- if (get_user(new, (int __user *)newval))
|
|
|
|
- return -EFAULT;
|
|
|
|
- *(int *)(table->data) = msecs_to_jiffies(new);
|
|
|
|
- }
|
|
|
|
- return 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-#else /* CONFIG_SYSCTL_SYSCALL */
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
|
|
|
|
-{
|
|
|
|
- struct __sysctl_args tmp;
|
|
|
|
- int error;
|
|
|
|
-
|
|
|
|
- if (copy_from_user(&tmp, args, sizeof(tmp)))
|
|
|
|
- return -EFAULT;
|
|
|
|
-
|
|
|
|
- error = deprecated_sysctl_warning(&tmp);
|
|
|
|
-
|
|
|
|
- /* If no error reading the parameters then just -ENOSYS ... */
|
|
|
|
- if (!error)
|
|
|
|
- error = -ENOSYS;
|
|
|
|
-
|
|
|
|
- return error;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int sysctl_data(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- return -ENOSYS;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int sysctl_string(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- return -ENOSYS;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int sysctl_intvec(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- return -ENOSYS;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int sysctl_jiffies(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- return -ENOSYS;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int sysctl_ms_jiffies(struct ctl_table *table,
|
|
|
|
- void __user *oldval, size_t __user *oldlenp,
|
|
|
|
- void __user *newval, size_t newlen)
|
|
|
|
-{
|
|
|
|
- return -ENOSYS;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-#endif /* CONFIG_SYSCTL_SYSCALL */
|
|
|
|
-
|
|
|
|
-static int deprecated_sysctl_warning(struct __sysctl_args *args)
|
|
|
|
-{
|
|
|
|
- static int msg_count;
|
|
|
|
- int name[CTL_MAXNAME];
|
|
|
|
- int i;
|
|
|
|
-
|
|
|
|
- /* Check args->nlen. */
|
|
|
|
- if (args->nlen < 0 || args->nlen > CTL_MAXNAME)
|
|
|
|
- return -ENOTDIR;
|
|
|
|
-
|
|
|
|
- /* Read in the sysctl name for better debug message logging */
|
|
|
|
- for (i = 0; i < args->nlen; i++)
|
|
|
|
- if (get_user(name[i], args->name + i))
|
|
|
|
- return -EFAULT;
|
|
|
|
-
|
|
|
|
- /* Ignore accesses to kernel.version */
|
|
|
|
- if ((args->nlen == 2) && (name[0] == CTL_KERN) && (name[1] == KERN_VERSION))
|
|
|
|
- return 0;
|
|
|
|
-
|
|
|
|
- if (msg_count < 5) {
|
|
|
|
- msg_count++;
|
|
|
|
- printk(KERN_INFO
|
|
|
|
- "warning: process `%s' used the deprecated sysctl "
|
|
|
|
- "system call with ", current->comm);
|
|
|
|
- for (i = 0; i < args->nlen; i++)
|
|
|
|
- printk("%d.", name[i]);
|
|
|
|
- printk("\n");
|
|
|
|
- }
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* No sense putting this after each symbol definition, twice,
|
|
* No sense putting this after each symbol definition, twice,
|
|
* exception granted :-)
|
|
* exception granted :-)
|
|
@@ -3250,9 +2652,4 @@ EXPORT_SYMBOL(proc_doulongvec_minmax);
|
|
EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax);
|
|
EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax);
|
|
EXPORT_SYMBOL(register_sysctl_table);
|
|
EXPORT_SYMBOL(register_sysctl_table);
|
|
EXPORT_SYMBOL(register_sysctl_paths);
|
|
EXPORT_SYMBOL(register_sysctl_paths);
|
|
-EXPORT_SYMBOL(sysctl_intvec);
|
|
|
|
-EXPORT_SYMBOL(sysctl_jiffies);
|
|
|
|
-EXPORT_SYMBOL(sysctl_ms_jiffies);
|
|
|
|
-EXPORT_SYMBOL(sysctl_string);
|
|
|
|
-EXPORT_SYMBOL(sysctl_data);
|
|
|
|
EXPORT_SYMBOL(unregister_sysctl_table);
|
|
EXPORT_SYMBOL(unregister_sysctl_table);
|