Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6: (43 commits)
  security/tomoyo: Remove now unnecessary handling of security_sysctl.
  security/tomoyo: Add a special case to handle accesses through the internal proc mount.
  sysctl: Drop & in front of every proc_handler.
  sysctl: Remove CTL_NONE and CTL_UNNUMBERED
  sysctl: kill dead ctl_handler definitions.
  sysctl: Remove the last of the generic binary sysctl support
  sysctl net: Remove unused binary sysctl code
  sysctl security/tomoyo: Don't look at ctl_name
  sysctl arm: Remove binary sysctl support
  sysctl x86: Remove dead binary sysctl support
  sysctl sh: Remove dead binary sysctl support
  sysctl powerpc: Remove dead binary sysctl support
  sysctl ia64: Remove dead binary sysctl support
  sysctl s390: Remove dead sysctl binary support
  sysctl frv: Remove dead binary sysctl support
  sysctl mips/lasat: Remove dead binary sysctl support
  sysctl drivers: Remove dead binary sysctl support
  sysctl crypto: Remove dead binary sysctl support
  sysctl security/keys: Remove dead binary sysctl support
  sysctl kernel: Remove binary sysctl logic
  ...
This commit is contained in:
Linus Torvalds 2009-12-08 07:38:50 -08:00
commit 1557d33007
135 changed files with 2183 additions and 4748 deletions

View file

@ -1,22 +0,0 @@
Except for a few extremely rare exceptions user space applications do not use
the binary sysctl interface. Instead everyone uses /proc/sys/... with
readable ascii names.
Recently the kernel has started supporting setting the binary sysctl value to
CTL_UNNUMBERED so we no longer need to assign a binary sysctl path to allow
sysctls to show up in /proc/sys.
Assigning binary sysctl numbers is an endless source of conflicts in sysctl.h,
breaking of the user space ABI (because of those conflicts), and maintenance
problems. A complete pass through all of the sysctl users revealed multiple
instances where the sysctl binary interface was broken and had gone undetected
for years.
So please do not add new binary sysctl numbers. They are unneeded and
problematic.
If you really need a new binary sysctl number please first merge your sysctl
into the kernel and then as a separate patch allocate a binary sysctl number.
(ebiederm@xmission.com, June 2007)

View file

@ -22,47 +22,42 @@ static unsigned int isa_membase, isa_portbase, isa_portshift;
static ctl_table ctl_isa_vars[4] = { static ctl_table ctl_isa_vars[4] = {
{ {
.ctl_name = BUS_ISA_MEM_BASE,
.procname = "membase", .procname = "membase",
.data = &isa_membase, .data = &isa_membase,
.maxlen = sizeof(isa_membase), .maxlen = sizeof(isa_membase),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, { }, {
.ctl_name = BUS_ISA_PORT_BASE,
.procname = "portbase", .procname = "portbase",
.data = &isa_portbase, .data = &isa_portbase,
.maxlen = sizeof(isa_portbase), .maxlen = sizeof(isa_portbase),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, { }, {
.ctl_name = BUS_ISA_PORT_SHIFT,
.procname = "portshift", .procname = "portshift",
.data = &isa_portshift, .data = &isa_portshift,
.maxlen = sizeof(isa_portshift), .maxlen = sizeof(isa_portshift),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, {0} }, {}
}; };
static struct ctl_table_header *isa_sysctl_header; static struct ctl_table_header *isa_sysctl_header;
static ctl_table ctl_isa[2] = { static ctl_table ctl_isa[2] = {
{ {
.ctl_name = CTL_BUS_ISA,
.procname = "isa", .procname = "isa",
.mode = 0555, .mode = 0555,
.child = ctl_isa_vars, .child = ctl_isa_vars,
}, {0} }, {}
}; };
static ctl_table ctl_bus[2] = { static ctl_table ctl_bus[2] = {
{ {
.ctl_name = CTL_BUS,
.procname = "bus", .procname = "bus",
.mode = 0555, .mode = 0555,
.child = ctl_isa, .child = ctl_isa,
}, {0} }, {}
}; };
void __init void __init

View file

@ -47,10 +47,6 @@ HW_DECLARE_SPINLOCK(gpio)
EXPORT_SYMBOL(bcmring_gpio_reg_lock); EXPORT_SYMBOL(bcmring_gpio_reg_lock);
#endif #endif
/* FIXME: temporary solution */
#define BCM_SYSCTL_REBOOT_WARM 1
#define CTL_BCM_REBOOT 112
/* sysctl */ /* sysctl */
int bcmring_arch_warm_reboot; /* do a warm reboot on hard reset */ int bcmring_arch_warm_reboot; /* do a warm reboot on hard reset */
@ -58,18 +54,16 @@ static struct ctl_table_header *bcmring_sysctl_header;
static struct ctl_table bcmring_sysctl_warm_reboot[] = { static struct ctl_table bcmring_sysctl_warm_reboot[] = {
{ {
.ctl_name = BCM_SYSCTL_REBOOT_WARM,
.procname = "warm", .procname = "warm",
.data = &bcmring_arch_warm_reboot, .data = &bcmring_arch_warm_reboot,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec}, .proc_handler = proc_dointvec},
{} {}
}; };
static struct ctl_table bcmring_sysctl_reboot[] = { static struct ctl_table bcmring_sysctl_reboot[] = {
{ {
.ctl_name = CTL_BCM_REBOOT,
.procname = "reboot", .procname = "reboot",
.mode = 0555, .mode = 0555,
.child = bcmring_sysctl_warm_reboot}, .child = bcmring_sysctl_warm_reboot},

View file

@ -211,37 +211,6 @@ static int cmode_procctl(ctl_table *ctl, int write,
return try_set_cmode(new_cmode)?:*lenp; return try_set_cmode(new_cmode)?:*lenp;
} }
static int cmode_sysctl(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
if (oldval && oldlenp) {
size_t oldlen;
if (get_user(oldlen, oldlenp))
return -EFAULT;
if (oldlen != sizeof(int))
return -EINVAL;
if (put_user(clock_cmode_current, (unsigned __user *)oldval) ||
put_user(sizeof(int), oldlenp))
return -EFAULT;
}
if (newval && newlen) {
int new_cmode;
if (newlen != sizeof(int))
return -EINVAL;
if (get_user(new_cmode, (int __user *)newval))
return -EFAULT;
return try_set_cmode(new_cmode)?:1;
}
return 1;
}
static int try_set_p0(int new_p0) static int try_set_p0(int new_p0)
{ {
unsigned long flags, clkc; unsigned long flags, clkc;
@ -314,37 +283,6 @@ static int p0_procctl(ctl_table *ctl, int write,
return try_set_p0(new_p0)?:*lenp; return try_set_p0(new_p0)?:*lenp;
} }
static int p0_sysctl(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
if (oldval && oldlenp) {
size_t oldlen;
if (get_user(oldlen, oldlenp))
return -EFAULT;
if (oldlen != sizeof(int))
return -EINVAL;
if (put_user(clock_p0_current, (unsigned __user *)oldval) ||
put_user(sizeof(int), oldlenp))
return -EFAULT;
}
if (newval && newlen) {
int new_p0;
if (newlen != sizeof(int))
return -EINVAL;
if (get_user(new_p0, (int __user *)newval))
return -EFAULT;
return try_set_p0(new_p0)?:1;
}
return 1;
}
static int cm_procctl(ctl_table *ctl, int write, static int cm_procctl(ctl_table *ctl, int write,
void __user *buffer, size_t *lenp, loff_t *fpos) void __user *buffer, size_t *lenp, loff_t *fpos)
{ {
@ -358,87 +296,47 @@ static int cm_procctl(ctl_table *ctl, int write,
return try_set_cm(new_cm)?:*lenp; return try_set_cm(new_cm)?:*lenp;
} }
static int cm_sysctl(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
if (oldval && oldlenp) {
size_t oldlen;
if (get_user(oldlen, oldlenp))
return -EFAULT;
if (oldlen != sizeof(int))
return -EINVAL;
if (put_user(clock_cm_current, (unsigned __user *)oldval) ||
put_user(sizeof(int), oldlenp))
return -EFAULT;
}
if (newval && newlen) {
int new_cm;
if (newlen != sizeof(int))
return -EINVAL;
if (get_user(new_cm, (int __user *)newval))
return -EFAULT;
return try_set_cm(new_cm)?:1;
}
return 1;
}
static struct ctl_table pm_table[] = static struct ctl_table pm_table[] =
{ {
{ {
.ctl_name = CTL_PM_SUSPEND,
.procname = "suspend", .procname = "suspend",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0200, .mode = 0200,
.proc_handler = &sysctl_pm_do_suspend, .proc_handler = sysctl_pm_do_suspend,
}, },
{ {
.ctl_name = CTL_PM_CMODE,
.procname = "cmode", .procname = "cmode",
.data = &clock_cmode_current, .data = &clock_cmode_current,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &cmode_procctl, .proc_handler = cmode_procctl,
.strategy = &cmode_sysctl,
}, },
{ {
.ctl_name = CTL_PM_P0,
.procname = "p0", .procname = "p0",
.data = &clock_p0_current, .data = &clock_p0_current,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &p0_procctl, .proc_handler = p0_procctl,
.strategy = &p0_sysctl,
}, },
{ {
.ctl_name = CTL_PM_CM,
.procname = "cm", .procname = "cm",
.data = &clock_cm_current, .data = &clock_cm_current,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &cm_procctl, .proc_handler = cm_procctl,
.strategy = &cm_sysctl,
}, },
{ .ctl_name = 0} { }
}; };
static struct ctl_table pm_dir_table[] = static struct ctl_table pm_dir_table[] =
{ {
{ {
.ctl_name = CTL_PM,
.procname = "pm", .procname = "pm",
.mode = 0555, .mode = 0555,
.child = pm_table, .child = pm_table,
}, },
{ .ctl_name = 0} { }
}; };
/* /*

View file

@ -176,21 +176,19 @@ static int procctl_frv_pin_cxnr(ctl_table *table, int write, struct file *filp,
static struct ctl_table frv_table[] = static struct ctl_table frv_table[] =
{ {
{ {
.ctl_name = 1,
.procname = "cache-mode", .procname = "cache-mode",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0644, .mode = 0644,
.proc_handler = &procctl_frv_cachemode, .proc_handler = procctl_frv_cachemode,
}, },
#ifdef CONFIG_MMU #ifdef CONFIG_MMU
{ {
.ctl_name = 2,
.procname = "pin-cxnr", .procname = "pin-cxnr",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0644, .mode = 0644,
.proc_handler = &procctl_frv_pin_cxnr .proc_handler = procctl_frv_pin_cxnr
}, },
#endif #endif
{} {}
@ -203,7 +201,6 @@ static struct ctl_table frv_table[] =
static struct ctl_table frv_dir_table[] = static struct ctl_table frv_dir_table[] =
{ {
{ {
.ctl_name = CTL_FRV,
.procname = "frv", .procname = "frv",
.mode = 0555, .mode = 0555,
.child = frv_table .child = frv_table

View file

@ -327,7 +327,7 @@ ia32_syscall_table:
data8 compat_sys_writev data8 compat_sys_writev
data8 sys_getsid data8 sys_getsid
data8 sys_fdatasync data8 sys_fdatasync
data8 sys32_sysctl data8 compat_sys_sysctl
data8 sys_mlock /* 150 */ data8 sys_mlock /* 150 */
data8 sys_munlock data8 sys_munlock
data8 sys_mlockall data8 sys_mlockall

View file

@ -1628,61 +1628,6 @@ sys32_msync (unsigned int start, unsigned int len, int flags)
return sys_msync(addr, len + (start - addr), flags); return sys_msync(addr, len + (start - addr), flags);
} }
struct sysctl32 {
unsigned int name;
int nlen;
unsigned int oldval;
unsigned int oldlenp;
unsigned int newval;
unsigned int newlen;
unsigned int __unused[4];
};
#ifdef CONFIG_SYSCTL_SYSCALL
asmlinkage long
sys32_sysctl (struct sysctl32 __user *args)
{
struct sysctl32 a32;
mm_segment_t old_fs = get_fs ();
void __user *oldvalp, *newvalp;
size_t oldlen;
int __user *namep;
long ret;
if (copy_from_user(&a32, args, sizeof(a32)))
return -EFAULT;
/*
* We need to pre-validate these because we have to disable address checking
* before calling do_sysctl() because of OLDLEN but we can't run the risk of the
* user specifying bad addresses here. Well, since we're dealing with 32 bit
* addresses, we KNOW that access_ok() will always succeed, so this is an
* expensive NOP, but so what...
*/
namep = (int __user *) compat_ptr(a32.name);
oldvalp = compat_ptr(a32.oldval);
newvalp = compat_ptr(a32.newval);
if ((oldvalp && get_user(oldlen, (int __user *) compat_ptr(a32.oldlenp)))
|| !access_ok(VERIFY_WRITE, namep, 0)
|| !access_ok(VERIFY_WRITE, oldvalp, 0)
|| !access_ok(VERIFY_WRITE, newvalp, 0))
return -EFAULT;
set_fs(KERNEL_DS);
lock_kernel();
ret = do_sysctl(namep, a32.nlen, oldvalp, (size_t __user *) &oldlen,
newvalp, (size_t) a32.newlen);
unlock_kernel();
set_fs(old_fs);
if (oldvalp && put_user (oldlen, (int __user *) compat_ptr(a32.oldlenp)))
return -EFAULT;
return ret;
}
#endif
asmlinkage long asmlinkage long
sys32_newuname (struct new_utsname __user *name) sys32_newuname (struct new_utsname __user *name)
{ {

View file

@ -239,32 +239,29 @@ kdump_init_notifier(struct notifier_block *self, unsigned long val, void *data)
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
static ctl_table kdump_ctl_table[] = { static ctl_table kdump_ctl_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "kdump_on_init", .procname = "kdump_on_init",
.data = &kdump_on_init, .data = &kdump_on_init,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "kdump_on_fatal_mca", .procname = "kdump_on_fatal_mca",
.data = &kdump_on_fatal_mca, .data = &kdump_on_fatal_mca,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table sys_table[] = { static ctl_table sys_table[] = {
{ {
.ctl_name = CTL_KERN,
.procname = "kernel", .procname = "kernel",
.mode = 0555, .mode = 0555,
.child = kdump_ctl_table, .child = kdump_ctl_table,
}, },
{ .ctl_name = 0 } { }
}; };
#endif #endif

View file

@ -522,42 +522,37 @@ EXPORT_SYMBOL(pfm_sysctl);
static ctl_table pfm_ctl_table[]={ static ctl_table pfm_ctl_table[]={
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "debug", .procname = "debug",
.data = &pfm_sysctl.debug, .data = &pfm_sysctl.debug,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0666, .mode = 0666,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "debug_ovfl", .procname = "debug_ovfl",
.data = &pfm_sysctl.debug_ovfl, .data = &pfm_sysctl.debug_ovfl,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0666, .mode = 0666,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "fastctxsw", .procname = "fastctxsw",
.data = &pfm_sysctl.fastctxsw, .data = &pfm_sysctl.fastctxsw,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0600, .mode = 0600,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "expert_mode", .procname = "expert_mode",
.data = &pfm_sysctl.expert_mode, .data = &pfm_sysctl.expert_mode,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0600, .mode = 0600,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{} {}
}; };
static ctl_table pfm_sysctl_dir[] = { static ctl_table pfm_sysctl_dir[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "perfmon", .procname = "perfmon",
.mode = 0555, .mode = 0555,
.child = pfm_ctl_table, .child = pfm_ctl_table,
@ -566,7 +561,6 @@ static ctl_table pfm_sysctl_dir[] = {
}; };
static ctl_table pfm_sysctl_root[] = { static ctl_table pfm_sysctl_root[] = {
{ {
.ctl_name = CTL_KERN,
.procname = "kernel", .procname = "kernel",
.mode = 0555, .mode = 0555,
.child = pfm_sysctl_dir, .child = pfm_sysctl_dir,

View file

@ -265,67 +265,6 @@ SYSCALL_DEFINE5(n32_msgrcv, int, msqid, u32, msgp, size_t, msgsz,
} }
#endif #endif
struct sysctl_args32
{
compat_caddr_t name;
int nlen;
compat_caddr_t oldval;
compat_caddr_t oldlenp;
compat_caddr_t newval;
compat_size_t newlen;
unsigned int __unused[4];
};
#ifdef CONFIG_SYSCTL_SYSCALL
SYSCALL_DEFINE1(32_sysctl, struct sysctl_args32 __user *, args)
{
struct sysctl_args32 tmp;
int error;
size_t oldlen;
size_t __user *oldlenp = NULL;
unsigned long addr = (((unsigned long)&args->__unused[0]) + 7) & ~7;
if (copy_from_user(&tmp, args, sizeof(tmp)))
return -EFAULT;
if (tmp.oldval && tmp.oldlenp) {
/* Duh, this is ugly and might not work if sysctl_args
is in read-only memory, but do_sysctl does indirectly
a lot of uaccess in both directions and we'd have to
basically copy the whole sysctl.c here, and
glibc's __sysctl uses rw memory for the structure
anyway. */
if (get_user(oldlen, (u32 __user *)A(tmp.oldlenp)) ||
put_user(oldlen, (size_t __user *)addr))
return -EFAULT;
oldlenp = (size_t __user *)addr;
}
lock_kernel();
error = do_sysctl((int __user *)A(tmp.name), tmp.nlen, (void __user *)A(tmp.oldval),
oldlenp, (void __user *)A(tmp.newval), tmp.newlen);
unlock_kernel();
if (oldlenp) {
if (!error) {
if (get_user(oldlen, (size_t __user *)addr) ||
put_user(oldlen, (u32 __user *)A(tmp.oldlenp)))
error = -EFAULT;
}
copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused));
}
return error;
}
#else
SYSCALL_DEFINE1(32_sysctl, struct sysctl_args32 __user *, args)
{
return -ENOSYS;
}
#endif /* CONFIG_SYSCTL_SYSCALL */
SYSCALL_DEFINE1(32_newuname, struct new_utsname __user *, name) SYSCALL_DEFINE1(32_newuname, struct new_utsname __user *, name)
{ {
int ret = 0; int ret = 0;

View file

@ -272,7 +272,7 @@ EXPORT(sysn32_call_table)
PTR sys_munlockall PTR sys_munlockall
PTR sys_vhangup /* 6150 */ PTR sys_vhangup /* 6150 */
PTR sys_pivot_root PTR sys_pivot_root
PTR sys_32_sysctl PTR compat_sys_sysctl
PTR sys_prctl PTR sys_prctl
PTR compat_sys_adjtimex PTR compat_sys_adjtimex
PTR compat_sys_setrlimit /* 6155 */ PTR compat_sys_setrlimit /* 6155 */

View file

@ -356,7 +356,7 @@ sys_call_table:
PTR sys_ni_syscall /* 4150 */ PTR sys_ni_syscall /* 4150 */
PTR sys_getsid PTR sys_getsid
PTR sys_fdatasync PTR sys_fdatasync
PTR sys_32_sysctl PTR compat_sys_sysctl
PTR sys_mlock PTR sys_mlock
PTR sys_munlock /* 4155 */ PTR sys_munlock /* 4155 */
PTR sys_mlockall PTR sys_mlockall

View file

@ -37,23 +37,6 @@
#include "ds1603.h" #include "ds1603.h"
#endif #endif
/* Strategy function to write EEPROM after changing string entry */
int sysctl_lasatstring(ctl_table *table,
void *oldval, size_t *oldlenp,
void *newval, size_t newlen)
{
int r;
r = sysctl_string(table, oldval, oldlenp, newval, newlen);
if (r < 0)
return r;
if (newval && newlen)
lasat_write_eeprom_info();
return 0;
}
/* And the same for proc */ /* And the same for proc */
int proc_dolasatstring(ctl_table *table, int write, int proc_dolasatstring(ctl_table *table, int write,
@ -113,46 +96,6 @@ int proc_dolasatrtc(ctl_table *table, int write,
} }
#endif #endif
/* Sysctl for setting the IP addresses */
int sysctl_lasat_intvec(ctl_table *table,
void *oldval, size_t *oldlenp,
void *newval, size_t newlen)
{
int r;
r = sysctl_intvec(table, oldval, oldlenp, newval, newlen);
if (r < 0)
return r;
if (newval && newlen)
lasat_write_eeprom_info();
return 0;
}
#ifdef CONFIG_DS1603
/* Same for RTC */
int sysctl_lasat_rtc(ctl_table *table,
void *oldval, size_t *oldlenp,
void *newval, size_t newlen)
{
struct timespec ts;
int r;
read_persistent_clock(&ts);
rtctmp = ts.tv_sec;
if (rtctmp < 0)
rtctmp = 0;
r = sysctl_intvec(table, oldval, oldlenp, newval, newlen);
if (r < 0)
return r;
if (newval && newlen)
rtc_mips_set_mmss(rtctmp);
return r;
}
#endif
#ifdef CONFIG_INET #ifdef CONFIG_INET
int proc_lasat_ip(ctl_table *table, int write, int proc_lasat_ip(ctl_table *table, int write,
void *buffer, size_t *lenp, loff_t *ppos) void *buffer, size_t *lenp, loff_t *ppos)
@ -214,23 +157,6 @@ int proc_lasat_ip(ctl_table *table, int write,
} }
#endif #endif
static int sysctl_lasat_prid(ctl_table *table,
void *oldval, size_t *oldlenp,
void *newval, size_t newlen)
{
int r;
r = sysctl_intvec(table, oldval, oldlenp, newval, newlen);
if (r < 0)
return r;
if (newval && newlen) {
lasat_board_info.li_eeprom_info.prid = *(int *)newval;
lasat_write_eeprom_info();
lasat_init_board_info();
}
return 0;
}
int proc_lasat_prid(ctl_table *table, int write, int proc_lasat_prid(ctl_table *table, int write,
void *buffer, size_t *lenp, loff_t *ppos) void *buffer, size_t *lenp, loff_t *ppos)
{ {
@ -252,115 +178,92 @@ extern int lasat_boot_to_service;
static ctl_table lasat_table[] = { static ctl_table lasat_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "cpu-hz", .procname = "cpu-hz",
.data = &lasat_board_info.li_cpu_hz, .data = &lasat_board_info.li_cpu_hz,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
.strategy = &sysctl_intvec
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "bus-hz", .procname = "bus-hz",
.data = &lasat_board_info.li_bus_hz, .data = &lasat_board_info.li_bus_hz,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
.strategy = &sysctl_intvec
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "bmid", .procname = "bmid",
.data = &lasat_board_info.li_bmid, .data = &lasat_board_info.li_bmid,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
.strategy = &sysctl_intvec
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "prid", .procname = "prid",
.data = &lasat_board_info.li_prid, .data = &lasat_board_info.li_prid,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_lasat_prid, .proc_handler = proc_lasat_prid,
.strategy = &sysctl_lasat_prid . },
},
#ifdef CONFIG_INET #ifdef CONFIG_INET
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "ipaddr", .procname = "ipaddr",
.data = &lasat_board_info.li_eeprom_info.ipaddr, .data = &lasat_board_info.li_eeprom_info.ipaddr,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_lasat_ip, .proc_handler = proc_lasat_ip,
.strategy = &sysctl_lasat_intvec
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "netmask", .procname = "netmask",
.data = &lasat_board_info.li_eeprom_info.netmask, .data = &lasat_board_info.li_eeprom_info.netmask,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_lasat_ip, .proc_handler = proc_lasat_ip,
.strategy = &sysctl_lasat_intvec
}, },
#endif #endif
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "passwd_hash", .procname = "passwd_hash",
.data = &lasat_board_info.li_eeprom_info.passwd_hash, .data = &lasat_board_info.li_eeprom_info.passwd_hash,
.maxlen = .maxlen =
sizeof(lasat_board_info.li_eeprom_info.passwd_hash), sizeof(lasat_board_info.li_eeprom_info.passwd_hash),
.mode = 0600, .mode = 0600,
.proc_handler = &proc_dolasatstring, .proc_handler = proc_dolasatstring,
.strategy = &sysctl_lasatstring
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "boot-service", .procname = "boot-service",
.data = &lasat_boot_to_service, .data = &lasat_boot_to_service,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
.strategy = &sysctl_intvec
}, },
#ifdef CONFIG_DS1603 #ifdef CONFIG_DS1603
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "rtc", .procname = "rtc",
.data = &rtctmp, .data = &rtctmp,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dolasatrtc, .proc_handler = proc_dolasatrtc,
.strategy = &sysctl_lasat_rtc
}, },
#endif #endif
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "namestr", .procname = "namestr",
.data = &lasat_board_info.li_namestr, .data = &lasat_board_info.li_namestr,
.maxlen = sizeof(lasat_board_info.li_namestr), .maxlen = sizeof(lasat_board_info.li_namestr),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dostring, .proc_handler = proc_dostring,
.strategy = &sysctl_string
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "typestr", .procname = "typestr",
.data = &lasat_board_info.li_typestr, .data = &lasat_board_info.li_typestr,
.maxlen = sizeof(lasat_board_info.li_typestr), .maxlen = sizeof(lasat_board_info.li_typestr),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dostring, .proc_handler = proc_dostring,
.strategy = &sysctl_string
}, },
{} {}
}; };
static ctl_table lasat_root_table[] = { static ctl_table lasat_root_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "lasat", .procname = "lasat",
.mode = 0555, .mode = 0555,
.child = lasat_table .child = lasat_table

View file

@ -90,77 +90,6 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,
return -ENOSYS; return -ENOSYS;
} }
#ifdef CONFIG_SYSCTL
struct __sysctl_args32 {
u32 name;
int nlen;
u32 oldval;
u32 oldlenp;
u32 newval;
u32 newlen;
u32 __unused[4];
};
asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
{
#ifndef CONFIG_SYSCTL_SYSCALL
return -ENOSYS;
#else
struct __sysctl_args32 tmp;
int error;
unsigned int oldlen32;
size_t oldlen, __user *oldlenp = NULL;
unsigned long addr = (((long __force)&args->__unused[0]) + 7) & ~7;
DBG(("sysctl32(%p)\n", args));
if (copy_from_user(&tmp, args, sizeof(tmp)))
return -EFAULT;
if (tmp.oldval && tmp.oldlenp) {
/* Duh, this is ugly and might not work if sysctl_args
is in read-only memory, but do_sysctl does indirectly
a lot of uaccess in both directions and we'd have to
basically copy the whole sysctl.c here, and
glibc's __sysctl uses rw memory for the structure
anyway. */
/* a possibly better hack than this, which will avoid the
* problem if the struct is read only, is to push the
* 'oldlen' value out to the user's stack instead. -PB
*/
if (get_user(oldlen32, (u32 *)(u64)tmp.oldlenp))
return -EFAULT;
oldlen = oldlen32;
if (put_user(oldlen, (size_t *)addr))
return -EFAULT;
oldlenp = (size_t *)addr;
}
lock_kernel();
error = do_sysctl((int __user *)(u64)tmp.name, tmp.nlen,
(void __user *)(u64)tmp.oldval, oldlenp,
(void __user *)(u64)tmp.newval, tmp.newlen);
unlock_kernel();
if (oldlenp) {
if (!error) {
if (get_user(oldlen, (size_t *)addr)) {
error = -EFAULT;
} else {
oldlen32 = oldlen;
if (put_user(oldlen32, (u32 *)(u64)tmp.oldlenp))
error = -EFAULT;
}
}
if (copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused)))
error = -EFAULT;
}
return error;
#endif
}
#endif /* CONFIG_SYSCTL */
asmlinkage long sys32_sched_rr_get_interval(pid_t pid, asmlinkage long sys32_sched_rr_get_interval(pid_t pid,
struct compat_timespec __user *interval) struct compat_timespec __user *interval)
{ {

View file

@ -234,7 +234,7 @@
ENTRY_SAME(getsid) ENTRY_SAME(getsid)
ENTRY_SAME(fdatasync) ENTRY_SAME(fdatasync)
/* struct __sysctl_args is a mess */ /* struct __sysctl_args is a mess */
ENTRY_DIFF(sysctl) ENTRY_COMP(sysctl)
ENTRY_SAME(mlock) /* 150 */ ENTRY_SAME(mlock) /* 150 */
ENTRY_SAME(munlock) ENTRY_SAME(munlock)
ENTRY_SAME(mlockall) ENTRY_SAME(mlockall)

View file

@ -110,18 +110,16 @@ int powersave_nap;
*/ */
static ctl_table powersave_nap_ctl_table[]={ static ctl_table powersave_nap_ctl_table[]={
{ {
.ctl_name = KERN_PPC_POWERSAVE_NAP,
.procname = "powersave-nap", .procname = "powersave-nap",
.data = &powersave_nap, .data = &powersave_nap,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{} {}
}; };
static ctl_table powersave_nap_sysctl_root[] = { static ctl_table powersave_nap_sysctl_root[] = {
{ {
.ctl_name = CTL_KERN,
.procname = "kernel", .procname = "kernel",
.mode = 0555, .mode = 0555,
.child = powersave_nap_ctl_table, .child = powersave_nap_ctl_table,

View file

@ -520,58 +520,6 @@ asmlinkage long compat_sys_umask(u32 mask)
return sys_umask((int)mask); return sys_umask((int)mask);
} }
#ifdef CONFIG_SYSCTL_SYSCALL
struct __sysctl_args32 {
u32 name;
int nlen;
u32 oldval;
u32 oldlenp;
u32 newval;
u32 newlen;
u32 __unused[4];
};
asmlinkage long compat_sys_sysctl(struct __sysctl_args32 __user *args)
{
struct __sysctl_args32 tmp;
int error;
size_t oldlen;
size_t __user *oldlenp = NULL;
unsigned long addr = (((unsigned long)&args->__unused[0]) + 7) & ~7;
if (copy_from_user(&tmp, args, sizeof(tmp)))
return -EFAULT;
if (tmp.oldval && tmp.oldlenp) {
/* Duh, this is ugly and might not work if sysctl_args
is in read-only memory, but do_sysctl does indirectly
a lot of uaccess in both directions and we'd have to
basically copy the whole sysctl.c here, and
glibc's __sysctl uses rw memory for the structure
anyway. */
oldlenp = (size_t __user *)addr;
if (get_user(oldlen, (compat_size_t __user *)compat_ptr(tmp.oldlenp)) ||
put_user(oldlen, oldlenp))
return -EFAULT;
}
lock_kernel();
error = do_sysctl(compat_ptr(tmp.name), tmp.nlen,
compat_ptr(tmp.oldval), oldlenp,
compat_ptr(tmp.newval), tmp.newlen);
unlock_kernel();
if (oldlenp) {
if (!error) {
if (get_user(oldlen, oldlenp) ||
put_user(oldlen, (compat_size_t __user *)compat_ptr(tmp.oldlenp)))
error = -EFAULT;
}
copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused));
}
return error;
}
#endif
unsigned long compat_sys_mmap2(unsigned long addr, size_t len, unsigned long compat_sys_mmap2(unsigned long addr, size_t len,
unsigned long prot, unsigned long flags, unsigned long prot, unsigned long flags,
unsigned long fd, unsigned long pgoff) unsigned long fd, unsigned long pgoff)

View file

@ -61,12 +61,12 @@ static struct ctl_table appldata_table[] = {
{ {
.procname = "timer", .procname = "timer",
.mode = S_IRUGO | S_IWUSR, .mode = S_IRUGO | S_IWUSR,
.proc_handler = &appldata_timer_handler, .proc_handler = appldata_timer_handler,
}, },
{ {
.procname = "interval", .procname = "interval",
.mode = S_IRUGO | S_IWUSR, .mode = S_IRUGO | S_IWUSR,
.proc_handler = &appldata_interval_handler, .proc_handler = appldata_interval_handler,
}, },
{ }, { },
}; };

View file

@ -527,59 +527,6 @@ asmlinkage long sys32_sendfile64(int out_fd, int in_fd,
return ret; return ret;
} }
#ifdef CONFIG_SYSCTL_SYSCALL
struct __sysctl_args32 {
u32 name;
int nlen;
u32 oldval;
u32 oldlenp;
u32 newval;
u32 newlen;
u32 __unused[4];
};
asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
{
struct __sysctl_args32 tmp;
int error;
size_t oldlen;
size_t __user *oldlenp = NULL;
unsigned long addr = (((unsigned long)&args->__unused[0]) + 7) & ~7;
if (copy_from_user(&tmp, args, sizeof(tmp)))
return -EFAULT;
if (tmp.oldval && tmp.oldlenp) {
/* Duh, this is ugly and might not work if sysctl_args
is in read-only memory, but do_sysctl does indirectly
a lot of uaccess in both directions and we'd have to
basically copy the whole sysctl.c here, and
glibc's __sysctl uses rw memory for the structure
anyway. */
if (get_user(oldlen, (u32 __user *)compat_ptr(tmp.oldlenp)) ||
put_user(oldlen, (size_t __user *)addr))
return -EFAULT;
oldlenp = (size_t __user *)addr;
}
lock_kernel();
error = do_sysctl(compat_ptr(tmp.name), tmp.nlen, compat_ptr(tmp.oldval),
oldlenp, compat_ptr(tmp.newval), tmp.newlen);
unlock_kernel();
if (oldlenp) {
if (!error) {
if (get_user(oldlen, (size_t __user *)addr) ||
put_user(oldlen, (u32 __user *)compat_ptr(tmp.oldlenp)))
error = -EFAULT;
}
if (copy_to_user(args->__unused, tmp.__unused,
sizeof(tmp.__unused)))
error = -EFAULT;
}
return error;
}
#endif
struct stat64_emu31 { struct stat64_emu31 {
unsigned long long st_dev; unsigned long long st_dev;
unsigned int __pad1; unsigned int __pad1;

View file

@ -162,7 +162,6 @@ struct ucontext32 {
compat_sigset_t uc_sigmask; /* mask last for extensibility */ compat_sigset_t uc_sigmask; /* mask last for extensibility */
}; };
struct __sysctl_args32;
struct stat64_emu31; struct stat64_emu31;
struct mmap_arg_struct_emu31; struct mmap_arg_struct_emu31;
struct fadvise64_64_args; struct fadvise64_64_args;
@ -212,7 +211,6 @@ long sys32_sendfile(int out_fd, int in_fd, compat_off_t __user *offset,
size_t count); size_t count);
long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset, long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset,
s32 count); s32 count);
long sys32_sysctl(struct __sysctl_args32 __user *args);
long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf); long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf);
long sys32_lstat64(char __user * filename, long sys32_lstat64(char __user * filename,
struct stat64_emu31 __user * statbuf); struct stat64_emu31 __user * statbuf);

View file

@ -689,8 +689,6 @@ sys32_fdatasync_wrapper:
llgfr %r2,%r2 # unsigned int llgfr %r2,%r2 # unsigned int
jg sys_fdatasync # branch to system call jg sys_fdatasync # branch to system call
#sys32_sysctl_wrapper # tbd
.globl sys32_mlock_wrapper .globl sys32_mlock_wrapper
sys32_mlock_wrapper: sys32_mlock_wrapper:
llgfr %r2,%r2 # unsigned long llgfr %r2,%r2 # unsigned long
@ -1087,8 +1085,8 @@ sys32_stime_wrapper:
.globl sys32_sysctl_wrapper .globl sys32_sysctl_wrapper
sys32_sysctl_wrapper: sys32_sysctl_wrapper:
llgtr %r2,%r2 # struct __sysctl_args32 * llgtr %r2,%r2 # struct compat_sysctl_args *
jg sys32_sysctl jg compat_sys_sysctl
.globl sys32_fstat64_wrapper .globl sys32_fstat64_wrapper
sys32_fstat64_wrapper: sys32_fstat64_wrapper:

View file

@ -893,35 +893,30 @@ s390dbf_procactive(ctl_table *table, int write,
static struct ctl_table s390dbf_table[] = { static struct ctl_table s390dbf_table[] = {
{ {
.ctl_name = CTL_S390DBF_STOPPABLE,
.procname = "debug_stoppable", .procname = "debug_stoppable",
.data = &debug_stoppable, .data = &debug_stoppable,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = S_IRUGO | S_IWUSR, .mode = S_IRUGO | S_IWUSR,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
.strategy = &sysctl_intvec,
}, },
{ {
.ctl_name = CTL_S390DBF_ACTIVE,
.procname = "debug_active", .procname = "debug_active",
.data = &debug_active, .data = &debug_active,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = S_IRUGO | S_IWUSR, .mode = S_IRUGO | S_IWUSR,
.proc_handler = &s390dbf_procactive, .proc_handler = s390dbf_procactive,
.strategy = &sysctl_intvec,
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table s390dbf_dir_table[] = { static struct ctl_table s390dbf_dir_table[] = {
{ {
.ctl_name = CTL_S390DBF,
.procname = "s390dbf", .procname = "s390dbf",
.maxlen = 0, .maxlen = 0,
.mode = S_IRUGO | S_IXUGO, .mode = S_IRUGO | S_IXUGO,
.child = s390dbf_table, .child = s390dbf_table,
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table_header *s390dbf_sysctl_header; static struct ctl_table_header *s390dbf_sysctl_header;

View file

@ -343,30 +343,29 @@ static struct ctl_table cmm_table[] = {
{ {
.procname = "cmm_pages", .procname = "cmm_pages",
.mode = 0644, .mode = 0644,
.proc_handler = &cmm_pages_handler, .proc_handler = cmm_pages_handler,
}, },
{ {
.procname = "cmm_timed_pages", .procname = "cmm_timed_pages",
.mode = 0644, .mode = 0644,
.proc_handler = &cmm_pages_handler, .proc_handler = cmm_pages_handler,
}, },
{ {
.procname = "cmm_timeout", .procname = "cmm_timeout",
.mode = 0644, .mode = 0644,
.proc_handler = &cmm_timeout_handler, .proc_handler = cmm_timeout_handler,
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table cmm_dir_table[] = { static struct ctl_table cmm_dir_table[] = {
{ {
.ctl_name = CTL_VM,
.procname = "vm", .procname = "vm",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = cmm_table, .child = cmm_table,
}, },
{ .ctl_name = 0 } { }
}; };
#endif #endif

View file

@ -877,44 +877,39 @@ static int misaligned_fixup(struct pt_regs *regs)
static ctl_table unaligned_table[] = { static ctl_table unaligned_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "kernel_reports", .procname = "kernel_reports",
.data = &kernel_mode_unaligned_fixup_count, .data = &kernel_mode_unaligned_fixup_count,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "user_reports", .procname = "user_reports",
.data = &user_mode_unaligned_fixup_count, .data = &user_mode_unaligned_fixup_count,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "user_enable", .procname = "user_enable",
.data = &user_mode_unaligned_fixup_enable, .data = &user_mode_unaligned_fixup_enable,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec}, .proc_handler = proc_dointvec},
{} {}
}; };
static ctl_table unaligned_root[] = { static ctl_table unaligned_root[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "unaligned_fixup", .procname = "unaligned_fixup",
.mode = 0555, .mode = 0555,
unaligned_table .child = unaligned_table
}, },
{} {}
}; };
static ctl_table sh64_root[] = { static ctl_table sh64_root[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "sh64", .procname = "sh64",
.mode = 0555, .mode = 0555,
.child = unaligned_root .child = unaligned_root

View file

@ -591,63 +591,6 @@ out:
return ret; return ret;
} }
struct __sysctl_args32 {
u32 name;
int nlen;
u32 oldval;
u32 oldlenp;
u32 newval;
u32 newlen;
u32 __unused[4];
};
asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
{
#ifndef CONFIG_SYSCTL_SYSCALL
return -ENOSYS;
#else
struct __sysctl_args32 tmp;
int error;
size_t oldlen, __user *oldlenp = NULL;
unsigned long addr = (((unsigned long)&args->__unused[0]) + 7UL) & ~7UL;
if (copy_from_user(&tmp, args, sizeof(tmp)))
return -EFAULT;
if (tmp.oldval && tmp.oldlenp) {
/* Duh, this is ugly and might not work if sysctl_args
is in read-only memory, but do_sysctl does indirectly
a lot of uaccess in both directions and we'd have to
basically copy the whole sysctl.c here, and
glibc's __sysctl uses rw memory for the structure
anyway. */
if (get_user(oldlen, (u32 __user *)(unsigned long)tmp.oldlenp) ||
put_user(oldlen, (size_t __user *)addr))
return -EFAULT;
oldlenp = (size_t __user *)addr;
}
lock_kernel();
error = do_sysctl((int __user *)(unsigned long) tmp.name,
tmp.nlen,
(void __user *)(unsigned long) tmp.oldval,
oldlenp,
(void __user *)(unsigned long) tmp.newval,
tmp.newlen);
unlock_kernel();
if (oldlenp) {
if (!error) {
if (get_user(oldlen, (size_t __user *)addr) ||
put_user(oldlen, (u32 __user *)(unsigned long) tmp.oldlenp))
error = -EFAULT;
}
if (copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused)))
error = -EFAULT;
}
return error;
#endif
}
long sys32_lookup_dcookie(unsigned long cookie_high, long sys32_lookup_dcookie(unsigned long cookie_high,
unsigned long cookie_low, unsigned long cookie_low,
char __user *buf, size_t len) char __user *buf, size_t len)

View file

@ -68,7 +68,7 @@ sys_call_table32:
.word compat_sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys32_mlockall .word compat_sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys32_mlockall
/*240*/ .word sys_munlockall, sys32_sched_setparam, sys32_sched_getparam, sys32_sched_setscheduler, sys32_sched_getscheduler /*240*/ .word sys_munlockall, sys32_sched_setparam, sys32_sched_getparam, sys32_sched_setscheduler, sys32_sched_getscheduler
.word sys_sched_yield, sys32_sched_get_priority_max, sys32_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep .word sys_sched_yield, sys32_sched_get_priority_max, sys32_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep
/*250*/ .word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl /*250*/ .word sys32_mremap, compat_sys_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl
.word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep .word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
/*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun /*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun
.word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy

View file

@ -653,7 +653,7 @@ ia32_sys_call_table:
.quad compat_sys_writev .quad compat_sys_writev
.quad sys_getsid .quad sys_getsid
.quad sys_fdatasync .quad sys_fdatasync
.quad sys32_sysctl /* sysctl */ .quad compat_sys_sysctl /* sysctl */
.quad sys_mlock /* 150 */ .quad sys_mlock /* 150 */
.quad sys_munlock .quad sys_munlock
.quad sys_mlockall .quad sys_mlockall

View file

@ -434,62 +434,6 @@ asmlinkage long sys32_rt_sigqueueinfo(int pid, int sig,
return ret; return ret;
} }
#ifdef CONFIG_SYSCTL_SYSCALL
struct sysctl_ia32 {
unsigned int name;
int nlen;
unsigned int oldval;
unsigned int oldlenp;
unsigned int newval;
unsigned int newlen;
unsigned int __unused[4];
};
asmlinkage long sys32_sysctl(struct sysctl_ia32 __user *args32)
{
struct sysctl_ia32 a32;
mm_segment_t old_fs = get_fs();
void __user *oldvalp, *newvalp;
size_t oldlen;
int __user *namep;
long ret;
if (copy_from_user(&a32, args32, sizeof(a32)))
return -EFAULT;
/*
* We need to pre-validate these because we have to disable
* address checking before calling do_sysctl() because of
* OLDLEN but we can't run the risk of the user specifying bad
* addresses here. Well, since we're dealing with 32 bit
* addresses, we KNOW that access_ok() will always succeed, so
* this is an expensive NOP, but so what...
*/
namep = compat_ptr(a32.name);
oldvalp = compat_ptr(a32.oldval);
newvalp = compat_ptr(a32.newval);
if ((oldvalp && get_user(oldlen, (int __user *)compat_ptr(a32.oldlenp)))
|| !access_ok(VERIFY_WRITE, namep, 0)
|| !access_ok(VERIFY_WRITE, oldvalp, 0)
|| !access_ok(VERIFY_WRITE, newvalp, 0))
return -EFAULT;
set_fs(KERNEL_DS);
lock_kernel();
ret = do_sysctl(namep, a32.nlen, oldvalp, (size_t __user *)&oldlen,
newvalp, (size_t) a32.newlen);
unlock_kernel();
set_fs(old_fs);
if (oldvalp && put_user(oldlen, (int __user *)compat_ptr(a32.oldlenp)))
return -EFAULT;
return ret;
}
#endif
/* warning: next two assume little endian */ /* warning: next two assume little endian */
asmlinkage long sys32_pread(unsigned int fd, char __user *ubuf, u32 count, asmlinkage long sys32_pread(unsigned int fd, char __user *ubuf, u32 count,
u32 poslo, u32 poshi) u32 poslo, u32 poshi)

View file

@ -51,11 +51,6 @@ asmlinkage long sys32_sched_rr_get_interval(compat_pid_t,
asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *, compat_size_t); asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *, compat_size_t);
asmlinkage long sys32_rt_sigqueueinfo(int, int, compat_siginfo_t __user *); asmlinkage long sys32_rt_sigqueueinfo(int, int, compat_siginfo_t __user *);
#ifdef CONFIG_SYSCTL_SYSCALL
struct sysctl_ia32;
asmlinkage long sys32_sysctl(struct sysctl_ia32 __user *);
#endif
asmlinkage long sys32_pread(unsigned int, char __user *, u32, u32, u32); asmlinkage long sys32_pread(unsigned int, char __user *, u32, u32, u32);
asmlinkage long sys32_pwrite(unsigned int, char __user *, u32, u32, u32); asmlinkage long sys32_pwrite(unsigned int, char __user *, u32, u32, u32);

View file

@ -237,7 +237,7 @@ static ctl_table kernel_table2[] = {
}; };
static ctl_table kernel_root_table2[] = { static ctl_table kernel_root_table2[] = {
{ .ctl_name = CTL_KERN, .procname = "kernel", .mode = 0555, { .procname = "kernel", .mode = 0555,
.child = kernel_table2 }, .child = kernel_table2 },
{} {}
}; };

View file

@ -393,7 +393,6 @@ static ctl_table abi_table2[] = {
static ctl_table abi_root_table2[] = { static ctl_table abi_root_table2[] = {
{ {
.ctl_name = CTL_ABI,
.procname = "abi", .procname = "abi",
.mode = 0555, .mode = 0555,
.child = abi_table2 .child = abi_table2

View file

@ -25,28 +25,22 @@
#ifdef CONFIG_CRYPTO_FIPS #ifdef CONFIG_CRYPTO_FIPS
static struct ctl_table crypto_sysctl_table[] = { static struct ctl_table crypto_sysctl_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "fips_enabled", .procname = "fips_enabled",
.data = &fips_enabled, .data = &fips_enabled,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec .proc_handler = proc_dointvec
},
{
.ctl_name = 0,
}, },
{}
}; };
static struct ctl_table crypto_dir_table[] = { static struct ctl_table crypto_dir_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "crypto", .procname = "crypto",
.mode = 0555, .mode = 0555,
.child = crypto_sysctl_table .child = crypto_sysctl_table
}, },
{ {}
.ctl_name = 0,
},
}; };
static struct ctl_table_header *crypto_sysctls; static struct ctl_table_header *crypto_sysctls;

View file

@ -3557,67 +3557,65 @@ static ctl_table cdrom_table[] = {
.data = &cdrom_sysctl_settings.info, .data = &cdrom_sysctl_settings.info,
.maxlen = CDROM_STR_SIZE, .maxlen = CDROM_STR_SIZE,
.mode = 0444, .mode = 0444,
.proc_handler = &cdrom_sysctl_info, .proc_handler = cdrom_sysctl_info,
}, },
{ {
.procname = "autoclose", .procname = "autoclose",
.data = &cdrom_sysctl_settings.autoclose, .data = &cdrom_sysctl_settings.autoclose,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &cdrom_sysctl_handler, .proc_handler = cdrom_sysctl_handler,
}, },
{ {
.procname = "autoeject", .procname = "autoeject",
.data = &cdrom_sysctl_settings.autoeject, .data = &cdrom_sysctl_settings.autoeject,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &cdrom_sysctl_handler, .proc_handler = cdrom_sysctl_handler,
}, },
{ {
.procname = "debug", .procname = "debug",
.data = &cdrom_sysctl_settings.debug, .data = &cdrom_sysctl_settings.debug,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &cdrom_sysctl_handler, .proc_handler = cdrom_sysctl_handler,
}, },
{ {
.procname = "lock", .procname = "lock",
.data = &cdrom_sysctl_settings.lock, .data = &cdrom_sysctl_settings.lock,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &cdrom_sysctl_handler, .proc_handler = cdrom_sysctl_handler,
}, },
{ {
.procname = "check_media", .procname = "check_media",
.data = &cdrom_sysctl_settings.check, .data = &cdrom_sysctl_settings.check,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &cdrom_sysctl_handler .proc_handler = cdrom_sysctl_handler
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table cdrom_cdrom_table[] = { static ctl_table cdrom_cdrom_table[] = {
{ {
.ctl_name = DEV_CDROM,
.procname = "cdrom", .procname = "cdrom",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = cdrom_table, .child = cdrom_table,
}, },
{ .ctl_name = 0 } { }
}; };
/* Make sure that /proc/sys/dev is there */ /* Make sure that /proc/sys/dev is there */
static ctl_table cdrom_root_table[] = { static ctl_table cdrom_root_table[] = {
{ {
.ctl_name = CTL_DEV,
.procname = "dev", .procname = "dev",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = cdrom_cdrom_table, .child = cdrom_cdrom_table,
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table_header *cdrom_sysctl_header; static struct ctl_table_header *cdrom_sysctl_header;

View file

@ -675,36 +675,33 @@ static int hpet_is_known(struct hpet_data *hdp)
static ctl_table hpet_table[] = { static ctl_table hpet_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "max-user-freq", .procname = "max-user-freq",
.data = &hpet_max_freq, .data = &hpet_max_freq,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{.ctl_name = 0} {}
}; };
static ctl_table hpet_root[] = { static ctl_table hpet_root[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "hpet", .procname = "hpet",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = hpet_table, .child = hpet_table,
}, },
{.ctl_name = 0} {}
}; };
static ctl_table dev_root[] = { static ctl_table dev_root[] = {
{ {
.ctl_name = CTL_DEV,
.procname = "dev", .procname = "dev",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = hpet_root, .child = hpet_root,
}, },
{.ctl_name = 0} {}
}; };
static struct ctl_table_header *sysctl_header; static struct ctl_table_header *sysctl_header;

View file

@ -660,26 +660,23 @@ static struct ipmi_smi_watcher smi_watcher = {
#include <linux/sysctl.h> #include <linux/sysctl.h>
static ctl_table ipmi_table[] = { static ctl_table ipmi_table[] = {
{ .ctl_name = DEV_IPMI_POWEROFF_POWERCYCLE, { .procname = "poweroff_powercycle",
.procname = "poweroff_powercycle",
.data = &poweroff_powercycle, .data = &poweroff_powercycle,
.maxlen = sizeof(poweroff_powercycle), .maxlen = sizeof(poweroff_powercycle),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec }, .proc_handler = proc_dointvec },
{ } { }
}; };
static ctl_table ipmi_dir_table[] = { static ctl_table ipmi_dir_table[] = {
{ .ctl_name = DEV_IPMI, { .procname = "ipmi",
.procname = "ipmi",
.mode = 0555, .mode = 0555,
.child = ipmi_table }, .child = ipmi_table },
{ } { }
}; };
static ctl_table ipmi_root_table[] = { static ctl_table ipmi_root_table[] = {
{ .ctl_name = CTL_DEV, { .procname = "dev",
.procname = "dev",
.mode = 0555, .mode = 0555,
.child = ipmi_dir_table }, .child = ipmi_dir_table },
{ } { }

View file

@ -431,30 +431,25 @@ static struct cdev ptmx_cdev;
static struct ctl_table pty_table[] = { static struct ctl_table pty_table[] = {
{ {
.ctl_name = PTY_MAX,
.procname = "max", .procname = "max",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.data = &pty_limit, .data = &pty_limit,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &pty_limit_min, .extra1 = &pty_limit_min,
.extra2 = &pty_limit_max, .extra2 = &pty_limit_max,
}, { }, {
.ctl_name = PTY_NR,
.procname = "nr", .procname = "nr",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.data = &pty_count, .data = &pty_count,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, { },
.ctl_name = 0 {}
}
}; };
static struct ctl_table pty_kern_table[] = { static struct ctl_table pty_kern_table[] = {
{ {
.ctl_name = KERN_PTY,
.procname = "pty", .procname = "pty",
.mode = 0555, .mode = 0555,
.child = pty_table, .child = pty_table,
@ -464,7 +459,6 @@ static struct ctl_table pty_kern_table[] = {
static struct ctl_table pty_root_table[] = { static struct ctl_table pty_root_table[] = {
{ {
.ctl_name = CTL_KERN,
.procname = "kernel", .procname = "kernel",
.mode = 0555, .mode = 0555,
.child = pty_kern_table, .child = pty_kern_table,

View file

@ -1257,94 +1257,54 @@ static int proc_do_uuid(ctl_table *table, int write,
return proc_dostring(&fake_table, write, buffer, lenp, ppos); return proc_dostring(&fake_table, write, buffer, lenp, ppos);
} }
static int uuid_strategy(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
unsigned char tmp_uuid[16], *uuid;
unsigned int len;
if (!oldval || !oldlenp)
return 1;
uuid = table->data;
if (!uuid) {
uuid = tmp_uuid;
uuid[8] = 0;
}
if (uuid[8] == 0)
generate_random_uuid(uuid);
if (get_user(len, oldlenp))
return -EFAULT;
if (len) {
if (len > 16)
len = 16;
if (copy_to_user(oldval, uuid, len) ||
put_user(len, oldlenp))
return -EFAULT;
}
return 1;
}
static int sysctl_poolsize = INPUT_POOL_WORDS * 32; static int sysctl_poolsize = INPUT_POOL_WORDS * 32;
ctl_table random_table[] = { ctl_table random_table[] = {
{ {
.ctl_name = RANDOM_POOLSIZE,
.procname = "poolsize", .procname = "poolsize",
.data = &sysctl_poolsize, .data = &sysctl_poolsize,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = RANDOM_ENTROPY_COUNT,
.procname = "entropy_avail", .procname = "entropy_avail",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
.data = &input_pool.entropy_count, .data = &input_pool.entropy_count,
}, },
{ {
.ctl_name = RANDOM_READ_THRESH,
.procname = "read_wakeup_threshold", .procname = "read_wakeup_threshold",
.data = &random_read_wakeup_thresh, .data = &random_read_wakeup_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &min_read_thresh, .extra1 = &min_read_thresh,
.extra2 = &max_read_thresh, .extra2 = &max_read_thresh,
}, },
{ {
.ctl_name = RANDOM_WRITE_THRESH,
.procname = "write_wakeup_threshold", .procname = "write_wakeup_threshold",
.data = &random_write_wakeup_thresh, .data = &random_write_wakeup_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &min_write_thresh, .extra1 = &min_write_thresh,
.extra2 = &max_write_thresh, .extra2 = &max_write_thresh,
}, },
{ {
.ctl_name = RANDOM_BOOT_ID,
.procname = "boot_id", .procname = "boot_id",
.data = &sysctl_bootid, .data = &sysctl_bootid,
.maxlen = 16, .maxlen = 16,
.mode = 0444, .mode = 0444,
.proc_handler = &proc_do_uuid, .proc_handler = proc_do_uuid,
.strategy = &uuid_strategy,
}, },
{ {
.ctl_name = RANDOM_UUID,
.procname = "uuid", .procname = "uuid",
.maxlen = 16, .maxlen = 16,
.mode = 0444, .mode = 0444,
.proc_handler = &proc_do_uuid, .proc_handler = proc_do_uuid,
.strategy = &uuid_strategy,
}, },
{ .ctl_name = 0 } { }
}; };
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */

View file

@ -282,34 +282,31 @@ static irqreturn_t rtc_interrupt(int irq, void *dev_id)
*/ */
static ctl_table rtc_table[] = { static ctl_table rtc_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "max-user-freq", .procname = "max-user-freq",
.data = &rtc_max_user_freq, .data = &rtc_max_user_freq,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table rtc_root[] = { static ctl_table rtc_root[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "rtc", .procname = "rtc",
.mode = 0555, .mode = 0555,
.child = rtc_table, .child = rtc_table,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table dev_root[] = { static ctl_table dev_root[] = {
{ {
.ctl_name = CTL_DEV,
.procname = "dev", .procname = "dev",
.mode = 0555, .mode = 0555,
.child = rtc_root, .child = rtc_root,
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table_header *sysctl_header; static struct ctl_table_header *sysctl_header;

View file

@ -27,54 +27,49 @@ static int mouse_last_keycode;
/* file(s) in /proc/sys/dev/mac_hid */ /* file(s) in /proc/sys/dev/mac_hid */
static ctl_table mac_hid_files[] = { static ctl_table mac_hid_files[] = {
{ {
.ctl_name = DEV_MAC_HID_MOUSE_BUTTON_EMULATION,
.procname = "mouse_button_emulation", .procname = "mouse_button_emulation",
.data = &mouse_emulate_buttons, .data = &mouse_emulate_buttons,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE,
.procname = "mouse_button2_keycode", .procname = "mouse_button2_keycode",
.data = &mouse_button2_keycode, .data = &mouse_button2_keycode,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE,
.procname = "mouse_button3_keycode", .procname = "mouse_button3_keycode",
.data = &mouse_button3_keycode, .data = &mouse_button3_keycode,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ .ctl_name = 0 } { }
}; };
/* dir in /proc/sys/dev */ /* dir in /proc/sys/dev */
static ctl_table mac_hid_dir[] = { static ctl_table mac_hid_dir[] = {
{ {
.ctl_name = DEV_MAC_HID,
.procname = "mac_hid", .procname = "mac_hid",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = mac_hid_files, .child = mac_hid_files,
}, },
{ .ctl_name = 0 } { }
}; };
/* /proc/sys/dev itself, in case that is not there yet */ /* /proc/sys/dev itself, in case that is not there yet */
static ctl_table mac_hid_root_dir[] = { static ctl_table mac_hid_root_dir[] = {
{ {
.ctl_name = CTL_DEV,
.procname = "dev", .procname = "dev",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = mac_hid_dir, .child = mac_hid_dir,
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table_header *mac_hid_sysctl_header; static struct ctl_table_header *mac_hid_sysctl_header;

View file

@ -98,44 +98,40 @@ static struct ctl_table_header *raid_table_header;
static ctl_table raid_table[] = { static ctl_table raid_table[] = {
{ {
.ctl_name = DEV_RAID_SPEED_LIMIT_MIN,
.procname = "speed_limit_min", .procname = "speed_limit_min",
.data = &sysctl_speed_limit_min, .data = &sysctl_speed_limit_min,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = S_IRUGO|S_IWUSR, .mode = S_IRUGO|S_IWUSR,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = DEV_RAID_SPEED_LIMIT_MAX,
.procname = "speed_limit_max", .procname = "speed_limit_max",
.data = &sysctl_speed_limit_max, .data = &sysctl_speed_limit_max,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = S_IRUGO|S_IWUSR, .mode = S_IRUGO|S_IWUSR,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table raid_dir_table[] = { static ctl_table raid_dir_table[] = {
{ {
.ctl_name = DEV_RAID,
.procname = "raid", .procname = "raid",
.maxlen = 0, .maxlen = 0,
.mode = S_IRUGO|S_IXUGO, .mode = S_IRUGO|S_IXUGO,
.child = raid_table, .child = raid_table,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table raid_root_table[] = { static ctl_table raid_root_table[] = {
{ {
.ctl_name = CTL_DEV,
.procname = "dev", .procname = "dev",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = raid_dir_table, .child = raid_dir_table,
}, },
{ .ctl_name = 0 } { }
}; };
static const struct block_device_operations md_fops; static const struct block_device_operations md_fops;

View file

@ -89,48 +89,40 @@ static int xpc_disengage_max_timelimit = 120;
static ctl_table xpc_sys_xpc_hb_dir[] = { static ctl_table xpc_sys_xpc_hb_dir[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "hb_interval", .procname = "hb_interval",
.data = &xpc_hb_interval, .data = &xpc_hb_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xpc_hb_min_interval, .extra1 = &xpc_hb_min_interval,
.extra2 = &xpc_hb_max_interval}, .extra2 = &xpc_hb_max_interval},
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "hb_check_interval", .procname = "hb_check_interval",
.data = &xpc_hb_check_interval, .data = &xpc_hb_check_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xpc_hb_check_min_interval, .extra1 = &xpc_hb_check_min_interval,
.extra2 = &xpc_hb_check_max_interval}, .extra2 = &xpc_hb_check_max_interval},
{} {}
}; };
static ctl_table xpc_sys_xpc_dir[] = { static ctl_table xpc_sys_xpc_dir[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "hb", .procname = "hb",
.mode = 0555, .mode = 0555,
.child = xpc_sys_xpc_hb_dir}, .child = xpc_sys_xpc_hb_dir},
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "disengage_timelimit", .procname = "disengage_timelimit",
.data = &xpc_disengage_timelimit, .data = &xpc_disengage_timelimit,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xpc_disengage_min_timelimit, .extra1 = &xpc_disengage_min_timelimit,
.extra2 = &xpc_disengage_max_timelimit}, .extra2 = &xpc_disengage_max_timelimit},
{} {}
}; };
static ctl_table xpc_sys_dir[] = { static ctl_table xpc_sys_dir[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "xpc", .procname = "xpc",
.mode = 0555, .mode = 0555,
.child = xpc_sys_xpc_dir}, .child = xpc_sys_xpc_dir},

View file

@ -816,84 +816,83 @@ static int arlan_sysctl_reset(ctl_table * ctl, int write,
/* Place files in /proc/sys/dev/arlan */ /* Place files in /proc/sys/dev/arlan */
#define CTBLN(num,card,nam) \ #define CTBLN(card,nam) \
{ .ctl_name = num,\ { .procname = #nam,\
.procname = #nam,\
.data = &(arlan_conf[card].nam),\ .data = &(arlan_conf[card].nam),\
.maxlen = sizeof(int), .mode = 0600, .proc_handler = &proc_dointvec} .maxlen = sizeof(int), .mode = 0600, .proc_handler = proc_dointvec}
#ifdef ARLAN_DEBUGGING #ifdef ARLAN_DEBUGGING
#define ARLAN_PROC_DEBUG_ENTRIES \ #define ARLAN_PROC_DEBUG_ENTRIES \
{ .ctl_name = 48, .procname = "entry_exit_debug",\ { .procname = "entry_exit_debug",\
.data = &arlan_entry_and_exit_debug,\ .data = &arlan_entry_and_exit_debug,\
.maxlen = sizeof(int), .mode = 0600, .proc_handler = &proc_dointvec},\ .maxlen = sizeof(int), .mode = 0600, .proc_handler = proc_dointvec},\
{ .ctl_name = 49, .procname = "debug", .data = &arlan_debug,\ { .procname = "debug", .data = &arlan_debug,\
.maxlen = sizeof(int), .mode = 0600, .proc_handler = &proc_dointvec}, .maxlen = sizeof(int), .mode = 0600, .proc_handler = proc_dointvec},
#else #else
#define ARLAN_PROC_DEBUG_ENTRIES #define ARLAN_PROC_DEBUG_ENTRIES
#endif #endif
#define ARLAN_SYSCTL_TABLE_TOTAL(cardNo)\ #define ARLAN_SYSCTL_TABLE_TOTAL(cardNo)\
CTBLN(1,cardNo,spreadingCode),\ CTBLN(cardNo,spreadingCode),\
CTBLN(2,cardNo, channelNumber),\ CTBLN(cardNo, channelNumber),\
CTBLN(3,cardNo, scramblingDisable),\ CTBLN(cardNo, scramblingDisable),\
CTBLN(4,cardNo, txAttenuation),\ CTBLN(cardNo, txAttenuation),\
CTBLN(5,cardNo, systemId), \ CTBLN(cardNo, systemId), \
CTBLN(6,cardNo, maxDatagramSize),\ CTBLN(cardNo, maxDatagramSize),\
CTBLN(7,cardNo, maxFrameSize),\ CTBLN(cardNo, maxFrameSize),\
CTBLN(8,cardNo, maxRetries),\ CTBLN(cardNo, maxRetries),\
CTBLN(9,cardNo, receiveMode),\ CTBLN(cardNo, receiveMode),\
CTBLN(10,cardNo, priority),\ CTBLN(cardNo, priority),\
CTBLN(11,cardNo, rootOrRepeater),\ CTBLN(cardNo, rootOrRepeater),\
CTBLN(12,cardNo, SID),\ CTBLN(cardNo, SID),\
CTBLN(13,cardNo, registrationMode),\ CTBLN(cardNo, registrationMode),\
CTBLN(14,cardNo, registrationFill),\ CTBLN(cardNo, registrationFill),\
CTBLN(15,cardNo, localTalkAddress),\ CTBLN(cardNo, localTalkAddress),\
CTBLN(16,cardNo, codeFormat),\ CTBLN(cardNo, codeFormat),\
CTBLN(17,cardNo, numChannels),\ CTBLN(cardNo, numChannels),\
CTBLN(18,cardNo, channel1),\ CTBLN(cardNo, channel1),\
CTBLN(19,cardNo, channel2),\ CTBLN(cardNo, channel2),\
CTBLN(20,cardNo, channel3),\ CTBLN(cardNo, channel3),\
CTBLN(21,cardNo, channel4),\ CTBLN(cardNo, channel4),\
CTBLN(22,cardNo, txClear),\ CTBLN(cardNo, txClear),\
CTBLN(23,cardNo, txRetries),\ CTBLN(cardNo, txRetries),\
CTBLN(24,cardNo, txRouting),\ CTBLN(cardNo, txRouting),\
CTBLN(25,cardNo, txScrambled),\ CTBLN(cardNo, txScrambled),\
CTBLN(26,cardNo, rxParameter),\ CTBLN(cardNo, rxParameter),\
CTBLN(27,cardNo, txTimeoutMs),\ CTBLN(cardNo, txTimeoutMs),\
CTBLN(28,cardNo, waitCardTimeout),\ CTBLN(cardNo, waitCardTimeout),\
CTBLN(29,cardNo, channelSet), \ CTBLN(cardNo, channelSet), \
{.ctl_name = 30, .procname = "name",\ { .procname = "name",\
.data = arlan_conf[cardNo].siteName,\ .data = arlan_conf[cardNo].siteName,\
.maxlen = 16, .mode = 0600, .proc_handler = &proc_dostring},\ .maxlen = 16, .mode = 0600, .proc_handler = proc_dostring},\
CTBLN(31,cardNo,waitTime),\ CTBLN(cardNo,waitTime),\
CTBLN(32,cardNo,lParameter),\ CTBLN(cardNo,lParameter),\
CTBLN(33,cardNo,_15),\ CTBLN(cardNo,_15),\
CTBLN(34,cardNo,headerSize),\ CTBLN(cardNo,headerSize),\
CTBLN(36,cardNo,tx_delay_ms),\ CTBLN(cardNo,tx_delay_ms),\
CTBLN(37,cardNo,retries),\ CTBLN(cardNo,retries),\
CTBLN(38,cardNo,ReTransmitPacketMaxSize),\ CTBLN(cardNo,ReTransmitPacketMaxSize),\
CTBLN(39,cardNo,waitReTransmitPacketMaxSize),\ CTBLN(cardNo,waitReTransmitPacketMaxSize),\
CTBLN(40,cardNo,fastReTransCount),\ CTBLN(cardNo,fastReTransCount),\
CTBLN(41,cardNo,driverRetransmissions),\ CTBLN(cardNo,driverRetransmissions),\
CTBLN(42,cardNo,txAckTimeoutMs),\ CTBLN(cardNo,txAckTimeoutMs),\
CTBLN(43,cardNo,registrationInterrupts),\ CTBLN(cardNo,registrationInterrupts),\
CTBLN(44,cardNo,hardwareType),\ CTBLN(cardNo,hardwareType),\
CTBLN(45,cardNo,radioType),\ CTBLN(cardNo,radioType),\
CTBLN(46,cardNo,writeEEPROM),\ CTBLN(cardNo,writeEEPROM),\
CTBLN(47,cardNo,writeRadioType),\ CTBLN(cardNo,writeRadioType),\
ARLAN_PROC_DEBUG_ENTRIES\ ARLAN_PROC_DEBUG_ENTRIES\
CTBLN(50,cardNo,in_speed),\ CTBLN(cardNo,in_speed),\
CTBLN(51,cardNo,out_speed),\ CTBLN(cardNo,out_speed),\
CTBLN(52,cardNo,in_speed10),\ CTBLN(cardNo,in_speed10),\
CTBLN(53,cardNo,out_speed10),\ CTBLN(cardNo,out_speed10),\
CTBLN(54,cardNo,in_speed_max),\ CTBLN(cardNo,in_speed_max),\
CTBLN(55,cardNo,out_speed_max),\ CTBLN(cardNo,out_speed_max),\
CTBLN(56,cardNo,measure_rate),\ CTBLN(cardNo,measure_rate),\
CTBLN(57,cardNo,pre_Command_Wait),\ CTBLN(cardNo,pre_Command_Wait),\
CTBLN(58,cardNo,rx_tweak1),\ CTBLN(cardNo,rx_tweak1),\
CTBLN(59,cardNo,rx_tweak2),\ CTBLN(cardNo,rx_tweak2),\
CTBLN(60,cardNo,tx_queue_len),\ CTBLN(cardNo,tx_queue_len),\
@ -903,63 +902,56 @@ static ctl_table arlan_conf_table0[] =
#ifdef ARLAN_PROC_SHM_DUMP #ifdef ARLAN_PROC_SHM_DUMP
{ {
.ctl_name = 150,
.procname = "arlan0-txRing", .procname = "arlan0-txRing",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_infotxRing, .proc_handler = arlan_sysctl_infotxRing,
}, },
{ {
.ctl_name = 151,
.procname = "arlan0-rxRing", .procname = "arlan0-rxRing",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_inforxRing, .proc_handler = arlan_sysctl_inforxRing,
}, },
{ {
.ctl_name = 152,
.procname = "arlan0-18", .procname = "arlan0-18",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info18, .proc_handler = arlan_sysctl_info18,
}, },
{ {
.ctl_name = 153,
.procname = "arlan0-ring", .procname = "arlan0-ring",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info161719, .proc_handler = arlan_sysctl_info161719,
}, },
{ {
.ctl_name = 154,
.procname = "arlan0-shm-cpy", .procname = "arlan0-shm-cpy",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info, .proc_handler = arlan_sysctl_info,
}, },
#endif #endif
{ {
.ctl_name = 155,
.procname = "config0", .procname = "config0",
.data = &conf_reset_result, .data = &conf_reset_result,
.maxlen = 100, .maxlen = 100,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_configure .proc_handler = arlan_configure
}, },
{ {
.ctl_name = 156,
.procname = "reset0", .procname = "reset0",
.data = &conf_reset_result, .data = &conf_reset_result,
.maxlen = 100, .maxlen = 100,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_reset, .proc_handler = arlan_sysctl_reset,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table arlan_conf_table1[] = static ctl_table arlan_conf_table1[] =
@ -969,63 +961,56 @@ static ctl_table arlan_conf_table1[] =
#ifdef ARLAN_PROC_SHM_DUMP #ifdef ARLAN_PROC_SHM_DUMP
{ {
.ctl_name = 150,
.procname = "arlan1-txRing", .procname = "arlan1-txRing",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_infotxRing, .proc_handler = arlan_sysctl_infotxRing,
}, },
{ {
.ctl_name = 151,
.procname = "arlan1-rxRing", .procname = "arlan1-rxRing",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_inforxRing, .proc_handler = arlan_sysctl_inforxRing,
}, },
{ {
.ctl_name = 152,
.procname = "arlan1-18", .procname = "arlan1-18",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info18, .proc_handler = arlan_sysctl_info18,
}, },
{ {
.ctl_name = 153,
.procname = "arlan1-ring", .procname = "arlan1-ring",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info161719, .proc_handler = arlan_sysctl_info161719,
}, },
{ {
.ctl_name = 154,
.procname = "arlan1-shm-cpy", .procname = "arlan1-shm-cpy",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info, .proc_handler = arlan_sysctl_info,
}, },
#endif #endif
{ {
.ctl_name = 155,
.procname = "config1", .procname = "config1",
.data = &conf_reset_result, .data = &conf_reset_result,
.maxlen = 100, .maxlen = 100,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_configure, .proc_handler = arlan_configure,
}, },
{ {
.ctl_name = 156,
.procname = "reset1", .procname = "reset1",
.data = &conf_reset_result, .data = &conf_reset_result,
.maxlen = 100, .maxlen = 100,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_reset, .proc_handler = arlan_sysctl_reset,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table arlan_conf_table2[] = static ctl_table arlan_conf_table2[] =
@ -1035,63 +1020,56 @@ static ctl_table arlan_conf_table2[] =
#ifdef ARLAN_PROC_SHM_DUMP #ifdef ARLAN_PROC_SHM_DUMP
{ {
.ctl_name = 150,
.procname = "arlan2-txRing", .procname = "arlan2-txRing",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_infotxRing, .proc_handler = arlan_sysctl_infotxRing,
}, },
{ {
.ctl_name = 151,
.procname = "arlan2-rxRing", .procname = "arlan2-rxRing",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_inforxRing, .proc_handler = arlan_sysctl_inforxRing,
}, },
{ {
.ctl_name = 152,
.procname = "arlan2-18", .procname = "arlan2-18",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info18, .proc_handler = arlan_sysctl_info18,
}, },
{ {
.ctl_name = 153,
.procname = "arlan2-ring", .procname = "arlan2-ring",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info161719, .proc_handler = arlan_sysctl_info161719,
}, },
{ {
.ctl_name = 154,
.procname = "arlan2-shm-cpy", .procname = "arlan2-shm-cpy",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info, .proc_handler = arlan_sysctl_info,
}, },
#endif #endif
{ {
.ctl_name = 155,
.procname = "config2", .procname = "config2",
.data = &conf_reset_result, .data = &conf_reset_result,
.maxlen = 100, .maxlen = 100,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_configure, .proc_handler = arlan_configure,
}, },
{ {
.ctl_name = 156,
.procname = "reset2", .procname = "reset2",
.data = &conf_reset_result, .data = &conf_reset_result,
.maxlen = 100, .maxlen = 100,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_reset, .proc_handler = arlan_sysctl_reset,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table arlan_conf_table3[] = static ctl_table arlan_conf_table3[] =
@ -1101,63 +1079,56 @@ static ctl_table arlan_conf_table3[] =
#ifdef ARLAN_PROC_SHM_DUMP #ifdef ARLAN_PROC_SHM_DUMP
{ {
.ctl_name = 150,
.procname = "arlan3-txRing", .procname = "arlan3-txRing",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_infotxRing, .proc_handler = arlan_sysctl_infotxRing,
}, },
{ {
.ctl_name = 151,
.procname = "arlan3-rxRing", .procname = "arlan3-rxRing",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_inforxRing, .proc_handler = arlan_sysctl_inforxRing,
}, },
{ {
.ctl_name = 152,
.procname = "arlan3-18", .procname = "arlan3-18",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info18, .proc_handler = arlan_sysctl_info18,
}, },
{ {
.ctl_name = 153,
.procname = "arlan3-ring", .procname = "arlan3-ring",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info161719, .proc_handler = arlan_sysctl_info161719,
}, },
{ {
.ctl_name = 154,
.procname = "arlan3-shm-cpy", .procname = "arlan3-shm-cpy",
.data = &arlan_drive_info, .data = &arlan_drive_info,
.maxlen = ARLAN_STR_SIZE, .maxlen = ARLAN_STR_SIZE,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_info, .proc_handler = arlan_sysctl_info,
}, },
#endif #endif
{ {
.ctl_name = 155,
.procname = "config3", .procname = "config3",
.data = &conf_reset_result, .data = &conf_reset_result,
.maxlen = 100, .maxlen = 100,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_configure, .proc_handler = arlan_configure,
}, },
{ {
.ctl_name = 156,
.procname = "reset3", .procname = "reset3",
.data = &conf_reset_result, .data = &conf_reset_result,
.maxlen = 100, .maxlen = 100,
.mode = 0400, .mode = 0400,
.proc_handler = &arlan_sysctl_reset, .proc_handler = arlan_sysctl_reset,
}, },
{ .ctl_name = 0 } { }
}; };
@ -1165,41 +1136,37 @@ static ctl_table arlan_conf_table3[] =
static ctl_table arlan_table[] = static ctl_table arlan_table[] =
{ {
{ {
.ctl_name = 0,
.procname = "arlan0", .procname = "arlan0",
.maxlen = 0, .maxlen = 0,
.mode = 0600, .mode = 0600,
.child = arlan_conf_table0, .child = arlan_conf_table0,
}, },
{ {
.ctl_name = 0,
.procname = "arlan1", .procname = "arlan1",
.maxlen = 0, .maxlen = 0,
.mode = 0600, .mode = 0600,
.child = arlan_conf_table1, .child = arlan_conf_table1,
}, },
{ {
.ctl_name = 0,
.procname = "arlan2", .procname = "arlan2",
.maxlen = 0, .maxlen = 0,
.mode = 0600, .mode = 0600,
.child = arlan_conf_table2, .child = arlan_conf_table2,
}, },
{ {
.ctl_name = 0,
.procname = "arlan3", .procname = "arlan3",
.maxlen = 0, .maxlen = 0,
.mode = 0600, .mode = 0600,
.child = arlan_conf_table3, .child = arlan_conf_table3,
}, },
{ .ctl_name = 0 } { }
}; };
#else #else
static ctl_table arlan_table[MAX_ARLANS + 1] = static ctl_table arlan_table[] =
{ {
{ .ctl_name = 0 } { }
}; };
#endif #endif
@ -1209,22 +1176,14 @@ static ctl_table arlan_table[MAX_ARLANS + 1] =
static ctl_table arlan_root_table[] = static ctl_table arlan_root_table[] =
{ {
{ {
.ctl_name = CTL_ARLAN,
.procname = "arlan", .procname = "arlan",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = arlan_table, .child = arlan_table,
}, },
{ .ctl_name = 0 } { }
}; };
/* Make sure that /proc/sys/dev is there */
//static ctl_table arlan_device_root_table[] =
//{
// {CTL_DEV, "dev", NULL, 0, 0555, arlan_root_table},
// {0}
//};
static struct ctl_table_header *arlan_device_sysctl_header; static struct ctl_table_header *arlan_device_sysctl_header;
@ -1234,8 +1193,6 @@ int __init init_arlan_proc(void)
int i = 0; int i = 0;
if (arlan_device_sysctl_header) if (arlan_device_sysctl_header)
return 0; return 0;
for (i = 0; i < MAX_ARLANS && arlan_device[i]; i++)
arlan_table[i].ctl_name = i + 1;
arlan_device_sysctl_header = register_sysctl_table(arlan_root_table); arlan_device_sysctl_header = register_sysctl_table(arlan_root_table);
if (!arlan_device_sysctl_header) if (!arlan_device_sysctl_header)
return -1; return -1;

View file

@ -233,10 +233,10 @@ static int do_hardware_modes (ctl_table *table, int write,
return copy_to_user(result, buffer, len) ? -EFAULT : 0; return copy_to_user(result, buffer, len) ? -EFAULT : 0;
} }
#define PARPORT_PORT_DIR(CHILD) { .ctl_name = 0, .procname = NULL, .mode = 0555, .child = CHILD } #define PARPORT_PORT_DIR(CHILD) { .procname = NULL, .mode = 0555, .child = CHILD }
#define PARPORT_PARPORT_DIR(CHILD) { .ctl_name = DEV_PARPORT, .procname = "parport", \ #define PARPORT_PARPORT_DIR(CHILD) { .procname = "parport", \
.mode = 0555, .child = CHILD } .mode = 0555, .child = CHILD }
#define PARPORT_DEV_DIR(CHILD) { .ctl_name = CTL_DEV, .procname = "dev", .mode = 0555, .child = CHILD } #define PARPORT_DEV_DIR(CHILD) { .procname = "dev", .mode = 0555, .child = CHILD }
#define PARPORT_DEVICES_ROOT_DIR { .procname = "devices", \ #define PARPORT_DEVICES_ROOT_DIR { .procname = "devices", \
.mode = 0555, .child = NULL } .mode = 0555, .child = NULL }
@ -270,7 +270,7 @@ static const struct parport_sysctl_table parport_sysctl_template = {
.data = NULL, .data = NULL,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.extra1 = (void*) &parport_min_spintime_value, .extra1 = (void*) &parport_min_spintime_value,
.extra2 = (void*) &parport_max_spintime_value .extra2 = (void*) &parport_max_spintime_value
}, },
@ -279,28 +279,28 @@ static const struct parport_sysctl_table parport_sysctl_template = {
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_hardware_base_addr .proc_handler = do_hardware_base_addr
}, },
{ {
.procname = "irq", .procname = "irq",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_hardware_irq .proc_handler = do_hardware_irq
}, },
{ {
.procname = "dma", .procname = "dma",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_hardware_dma .proc_handler = do_hardware_dma
}, },
{ {
.procname = "modes", .procname = "modes",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_hardware_modes .proc_handler = do_hardware_modes
}, },
PARPORT_DEVICES_ROOT_DIR, PARPORT_DEVICES_ROOT_DIR,
#ifdef CONFIG_PARPORT_1284 #ifdef CONFIG_PARPORT_1284
@ -309,35 +309,35 @@ static const struct parport_sysctl_table parport_sysctl_template = {
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_autoprobe .proc_handler = do_autoprobe
}, },
{ {
.procname = "autoprobe0", .procname = "autoprobe0",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_autoprobe .proc_handler = do_autoprobe
}, },
{ {
.procname = "autoprobe1", .procname = "autoprobe1",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_autoprobe .proc_handler = do_autoprobe
}, },
{ {
.procname = "autoprobe2", .procname = "autoprobe2",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_autoprobe .proc_handler = do_autoprobe
}, },
{ {
.procname = "autoprobe3", .procname = "autoprobe3",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_autoprobe .proc_handler = do_autoprobe
}, },
#endif /* IEEE 1284 support */ #endif /* IEEE 1284 support */
{} {}
@ -348,7 +348,7 @@ static const struct parport_sysctl_table parport_sysctl_template = {
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0444, .mode = 0444,
.proc_handler = &do_active_device .proc_handler = do_active_device
}, },
{} {}
}, },
@ -386,14 +386,13 @@ parport_device_sysctl_template = {
.data = NULL, .data = NULL,
.maxlen = sizeof(unsigned long), .maxlen = sizeof(unsigned long),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_doulongvec_ms_jiffies_minmax, .proc_handler = proc_doulongvec_ms_jiffies_minmax,
.extra1 = (void*) &parport_min_timeslice_value, .extra1 = (void*) &parport_min_timeslice_value,
.extra2 = (void*) &parport_max_timeslice_value .extra2 = (void*) &parport_max_timeslice_value
}, },
}, },
{ {
{ {
.ctl_name = 0,
.procname = NULL, .procname = NULL,
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
@ -438,7 +437,7 @@ parport_default_sysctl_table = {
.data = &parport_default_timeslice, .data = &parport_default_timeslice,
.maxlen = sizeof(parport_default_timeslice), .maxlen = sizeof(parport_default_timeslice),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_doulongvec_ms_jiffies_minmax, .proc_handler = proc_doulongvec_ms_jiffies_minmax,
.extra1 = (void*) &parport_min_timeslice_value, .extra1 = (void*) &parport_min_timeslice_value,
.extra2 = (void*) &parport_max_timeslice_value .extra2 = (void*) &parport_max_timeslice_value
}, },
@ -447,7 +446,7 @@ parport_default_sysctl_table = {
.data = &parport_default_spintime, .data = &parport_default_spintime,
.maxlen = sizeof(parport_default_spintime), .maxlen = sizeof(parport_default_spintime),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.extra1 = (void*) &parport_min_spintime_value, .extra1 = (void*) &parport_min_spintime_value,
.extra2 = (void*) &parport_max_spintime_value .extra2 = (void*) &parport_max_spintime_value
}, },
@ -455,7 +454,6 @@ parport_default_sysctl_table = {
}, },
{ {
{ {
.ctl_name = DEV_PARPORT_DEFAULT,
.procname = "default", .procname = "default",
.mode = 0555, .mode = 0555,
.child = parport_default_sysctl_table.vars .child = parport_default_sysctl_table.vars
@ -495,7 +493,6 @@ int parport_proc_register(struct parport *port)
t->vars[6 + i].extra2 = &port->probe_info[i]; t->vars[6 + i].extra2 = &port->probe_info[i];
t->port_dir[0].procname = port->name; t->port_dir[0].procname = port->name;
t->port_dir[0].ctl_name = 0;
t->port_dir[0].child = t->vars; t->port_dir[0].child = t->vars;
t->parport_dir[0].child = t->port_dir; t->parport_dir[0].child = t->port_dir;
@ -534,11 +531,9 @@ int parport_device_proc_register(struct pardevice *device)
t->dev_dir[0].child = t->parport_dir; t->dev_dir[0].child = t->parport_dir;
t->parport_dir[0].child = t->port_dir; t->parport_dir[0].child = t->port_dir;
t->port_dir[0].procname = port->name; t->port_dir[0].procname = port->name;
t->port_dir[0].ctl_name = 0;
t->port_dir[0].child = t->devices_root_dir; t->port_dir[0].child = t->devices_root_dir;
t->devices_root_dir[0].child = t->device_dir; t->devices_root_dir[0].child = t->device_dir;
t->device_dir[0].ctl_name = 0;
t->device_dir[0].procname = device->name; t->device_dir[0].procname = device->name;
t->device_dir[0].child = t->vars; t->device_dir[0].child = t->vars;
t->vars[0].data = &device->timeslice; t->vars[0].data = &device->timeslice;

View file

@ -101,18 +101,17 @@ static struct ctl_table callhome_table[] = {
.mode = 0644, .mode = 0644,
.proc_handler = proc_handler_callhome, .proc_handler = proc_handler_callhome,
}, },
{ .ctl_name = 0 } {}
}; };
static struct ctl_table kern_dir_table[] = { static struct ctl_table kern_dir_table[] = {
{ {
.ctl_name = CTL_KERN,
.procname = "kernel", .procname = "kernel",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = callhome_table, .child = callhome_table,
}, },
{ .ctl_name = 0 } {}
}; };
/* /*

View file

@ -13,26 +13,23 @@
static ctl_table scsi_table[] = { static ctl_table scsi_table[] = {
{ .ctl_name = DEV_SCSI_LOGGING_LEVEL, { .procname = "logging_level",
.procname = "logging_level",
.data = &scsi_logging_level, .data = &scsi_logging_level,
.maxlen = sizeof(scsi_logging_level), .maxlen = sizeof(scsi_logging_level),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec }, .proc_handler = proc_dointvec },
{ } { }
}; };
static ctl_table scsi_dir_table[] = { static ctl_table scsi_dir_table[] = {
{ .ctl_name = DEV_SCSI, { .procname = "scsi",
.procname = "scsi",
.mode = 0555, .mode = 0555,
.child = scsi_table }, .child = scsi_table },
{ } { }
}; };
static ctl_table scsi_root_table[] = { static ctl_table scsi_root_table[] = {
{ .ctl_name = CTL_DEV, { .procname = "dev",
.procname = "dev",
.mode = 0555, .mode = 0555,
.child = scsi_dir_table }, .child = scsi_dir_table },
{ } { }

View file

@ -17,28 +17,25 @@ static struct ctl_table_header *fs_table_header;
static ctl_table coda_table[] = { static ctl_table coda_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "timeout", .procname = "timeout",
.data = &coda_timeout, .data = &coda_timeout,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "hard", .procname = "hard",
.data = &coda_hard, .data = &coda_hard,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "fake_statfs", .procname = "fake_statfs",
.data = &coda_fake_statfs, .data = &coda_fake_statfs,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0600, .mode = 0600,
.proc_handler = &proc_dointvec .proc_handler = proc_dointvec
}, },
{} {}
}; };
@ -46,7 +43,6 @@ static ctl_table coda_table[] = {
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
static ctl_table fs_table[] = { static ctl_table fs_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "coda", .procname = "coda",
.mode = 0555, .mode = 0555,
.child = coda_table .child = coda_table

View file

@ -251,10 +251,10 @@ ctl_table epoll_table[] = {
.data = &max_user_watches, .data = &max_user_watches,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.extra1 = &zero, .extra1 = &zero,
}, },
{ .ctl_name = 0 } { }
}; };
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */

View file

@ -371,82 +371,74 @@ EXPORT_SYMBOL_GPL(lockd_down);
static ctl_table nlm_sysctls[] = { static ctl_table nlm_sysctls[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nlm_grace_period", .procname = "nlm_grace_period",
.data = &nlm_grace_period, .data = &nlm_grace_period,
.maxlen = sizeof(unsigned long), .maxlen = sizeof(unsigned long),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_doulongvec_minmax, .proc_handler = proc_doulongvec_minmax,
.extra1 = (unsigned long *) &nlm_grace_period_min, .extra1 = (unsigned long *) &nlm_grace_period_min,
.extra2 = (unsigned long *) &nlm_grace_period_max, .extra2 = (unsigned long *) &nlm_grace_period_max,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nlm_timeout", .procname = "nlm_timeout",
.data = &nlm_timeout, .data = &nlm_timeout,
.maxlen = sizeof(unsigned long), .maxlen = sizeof(unsigned long),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_doulongvec_minmax, .proc_handler = proc_doulongvec_minmax,
.extra1 = (unsigned long *) &nlm_timeout_min, .extra1 = (unsigned long *) &nlm_timeout_min,
.extra2 = (unsigned long *) &nlm_timeout_max, .extra2 = (unsigned long *) &nlm_timeout_max,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nlm_udpport", .procname = "nlm_udpport",
.data = &nlm_udpport, .data = &nlm_udpport,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.extra1 = (int *) &nlm_port_min, .extra1 = (int *) &nlm_port_min,
.extra2 = (int *) &nlm_port_max, .extra2 = (int *) &nlm_port_max,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nlm_tcpport", .procname = "nlm_tcpport",
.data = &nlm_tcpport, .data = &nlm_tcpport,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.extra1 = (int *) &nlm_port_min, .extra1 = (int *) &nlm_port_min,
.extra2 = (int *) &nlm_port_max, .extra2 = (int *) &nlm_port_max,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nsm_use_hostnames", .procname = "nsm_use_hostnames",
.data = &nsm_use_hostnames, .data = &nsm_use_hostnames,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nsm_local_state", .procname = "nsm_local_state",
.data = &nsm_local_state, .data = &nsm_local_state,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table nlm_sysctl_dir[] = { static ctl_table nlm_sysctl_dir[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nfs", .procname = "nfs",
.mode = 0555, .mode = 0555,
.child = nlm_sysctls, .child = nlm_sysctls,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table nlm_sysctl_root[] = { static ctl_table nlm_sysctl_root[] = {
{ {
.ctl_name = CTL_FS,
.procname = "fs", .procname = "fs",
.mode = 0555, .mode = 0555,
.child = nlm_sysctl_dir, .child = nlm_sysctl_dir,
}, },
{ .ctl_name = 0 } { }
}; };
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */

View file

@ -22,63 +22,55 @@ static struct ctl_table_header *nfs_callback_sysctl_table;
static ctl_table nfs_cb_sysctls[] = { static ctl_table nfs_cb_sysctls[] = {
#ifdef CONFIG_NFS_V4 #ifdef CONFIG_NFS_V4
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nfs_callback_tcpport", .procname = "nfs_callback_tcpport",
.data = &nfs_callback_set_tcpport, .data = &nfs_callback_set_tcpport,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.extra1 = (int *)&nfs_set_port_min, .extra1 = (int *)&nfs_set_port_min,
.extra2 = (int *)&nfs_set_port_max, .extra2 = (int *)&nfs_set_port_max,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "idmap_cache_timeout", .procname = "idmap_cache_timeout",
.data = &nfs_idmap_cache_timeout, .data = &nfs_idmap_cache_timeout,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = &sysctl_jiffies,
}, },
#endif #endif
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nfs_mountpoint_timeout", .procname = "nfs_mountpoint_timeout",
.data = &nfs_mountpoint_expiry_timeout, .data = &nfs_mountpoint_expiry_timeout,
.maxlen = sizeof(nfs_mountpoint_expiry_timeout), .maxlen = sizeof(nfs_mountpoint_expiry_timeout),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = &sysctl_jiffies,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nfs_congestion_kb", .procname = "nfs_congestion_kb",
.data = &nfs_congestion_kb, .data = &nfs_congestion_kb,
.maxlen = sizeof(nfs_congestion_kb), .maxlen = sizeof(nfs_congestion_kb),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table nfs_cb_sysctl_dir[] = { static ctl_table nfs_cb_sysctl_dir[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "nfs", .procname = "nfs",
.mode = 0555, .mode = 0555,
.child = nfs_cb_sysctls, .child = nfs_cb_sysctls,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table nfs_cb_sysctl_root[] = { static ctl_table nfs_cb_sysctl_root[] = {
{ {
.ctl_name = CTL_FS,
.procname = "fs", .procname = "fs",
.mode = 0555, .mode = 0555,
.child = nfs_cb_sysctl_dir, .child = nfs_cb_sysctl_dir,
}, },
{ .ctl_name = 0 } { }
}; };
int nfs_register_sysctl(void) int nfs_register_sysctl(void)

View file

@ -69,36 +69,30 @@ static int zero;
ctl_table inotify_table[] = { ctl_table inotify_table[] = {
{ {
.ctl_name = INOTIFY_MAX_USER_INSTANCES,
.procname = "max_user_instances", .procname = "max_user_instances",
.data = &inotify_max_user_instances, .data = &inotify_max_user_instances,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &zero, .extra1 = &zero,
}, },
{ {
.ctl_name = INOTIFY_MAX_USER_WATCHES,
.procname = "max_user_watches", .procname = "max_user_watches",
.data = &inotify_max_user_watches, .data = &inotify_max_user_watches,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &zero, .extra1 = &zero,
}, },
{ {
.ctl_name = INOTIFY_MAX_QUEUED_EVENTS,
.procname = "max_queued_events", .procname = "max_queued_events",
.data = &inotify_max_queued_events, .data = &inotify_max_queued_events,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &zero .extra1 = &zero
}, },
{ .ctl_name = 0 } { }
}; };
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */

View file

@ -36,12 +36,11 @@
/* Definition of the ntfs sysctl. */ /* Definition of the ntfs sysctl. */
static ctl_table ntfs_sysctls[] = { static ctl_table ntfs_sysctls[] = {
{ {
.ctl_name = CTL_UNNUMBERED, /* Binary and text IDs. */
.procname = "ntfs-debug", .procname = "ntfs-debug",
.data = &debug_msgs, /* Data pointer and size. */ .data = &debug_msgs, /* Data pointer and size. */
.maxlen = sizeof(debug_msgs), .maxlen = sizeof(debug_msgs),
.mode = 0644, /* Mode, proc handler. */ .mode = 0644, /* Mode, proc handler. */
.proc_handler = &proc_dointvec .proc_handler = proc_dointvec
}, },
{} {}
}; };
@ -49,7 +48,6 @@ static ctl_table ntfs_sysctls[] = {
/* Define the parent directory /proc/sys/fs. */ /* Define the parent directory /proc/sys/fs. */
static ctl_table sysctls_root[] = { static ctl_table sysctls_root[] = {
{ {
.ctl_name = CTL_FS,
.procname = "fs", .procname = "fs",
.mode = 0555, .mode = 0555,
.child = ntfs_sysctls .child = ntfs_sysctls

View file

@ -620,51 +620,46 @@ error:
static ctl_table ocfs2_nm_table[] = { static ctl_table ocfs2_nm_table[] = {
{ {
.ctl_name = 1,
.procname = "hb_ctl_path", .procname = "hb_ctl_path",
.data = ocfs2_hb_ctl_path, .data = ocfs2_hb_ctl_path,
.maxlen = OCFS2_MAX_HB_CTL_PATH, .maxlen = OCFS2_MAX_HB_CTL_PATH,
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dostring, .proc_handler = proc_dostring,
.strategy = &sysctl_string,
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table ocfs2_mod_table[] = { static ctl_table ocfs2_mod_table[] = {
{ {
.ctl_name = FS_OCFS2_NM,
.procname = "nm", .procname = "nm",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = ocfs2_nm_table .child = ocfs2_nm_table
}, },
{ .ctl_name = 0} { }
}; };
static ctl_table ocfs2_kern_table[] = { static ctl_table ocfs2_kern_table[] = {
{ {
.ctl_name = FS_OCFS2,
.procname = "ocfs2", .procname = "ocfs2",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = ocfs2_mod_table .child = ocfs2_mod_table
}, },
{ .ctl_name = 0} { }
}; };
static ctl_table ocfs2_root_table[] = { static ctl_table ocfs2_root_table[] = {
{ {
.ctl_name = CTL_FS,
.procname = "fs", .procname = "fs",
.data = NULL, .data = NULL,
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = ocfs2_kern_table .child = ocfs2_kern_table
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table_header *ocfs2_table_header = NULL; static struct ctl_table_header *ocfs2_table_header = NULL;

View file

@ -48,7 +48,7 @@ out:
static struct ctl_table *find_in_table(struct ctl_table *p, struct qstr *name) static struct ctl_table *find_in_table(struct ctl_table *p, struct qstr *name)
{ {
int len; int len;
for ( ; p->ctl_name || p->procname; p++) { for ( ; p->procname; p++) {
if (!p->procname) if (!p->procname)
continue; continue;
@ -218,7 +218,7 @@ static int scan(struct ctl_table_header *head, ctl_table *table,
void *dirent, filldir_t filldir) void *dirent, filldir_t filldir)
{ {
for (; table->ctl_name || table->procname; table++, (*pos)++) { for (; table->procname; table++, (*pos)++) {
int res; int res;
/* Can't do anything without a proc name */ /* Can't do anything without a proc name */

View file

@ -2404,100 +2404,89 @@ const struct quotactl_ops vfs_quotactl_ops = {
static ctl_table fs_dqstats_table[] = { static ctl_table fs_dqstats_table[] = {
{ {
.ctl_name = FS_DQ_LOOKUPS,
.procname = "lookups", .procname = "lookups",
.data = &dqstats.lookups, .data = &dqstats.lookups,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = FS_DQ_DROPS,
.procname = "drops", .procname = "drops",
.data = &dqstats.drops, .data = &dqstats.drops,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = FS_DQ_READS,
.procname = "reads", .procname = "reads",
.data = &dqstats.reads, .data = &dqstats.reads,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = FS_DQ_WRITES,
.procname = "writes", .procname = "writes",
.data = &dqstats.writes, .data = &dqstats.writes,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = FS_DQ_CACHE_HITS,
.procname = "cache_hits", .procname = "cache_hits",
.data = &dqstats.cache_hits, .data = &dqstats.cache_hits,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = FS_DQ_ALLOCATED,
.procname = "allocated_dquots", .procname = "allocated_dquots",
.data = &dqstats.allocated_dquots, .data = &dqstats.allocated_dquots,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = FS_DQ_FREE,
.procname = "free_dquots", .procname = "free_dquots",
.data = &dqstats.free_dquots, .data = &dqstats.free_dquots,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = FS_DQ_SYNCS,
.procname = "syncs", .procname = "syncs",
.data = &dqstats.syncs, .data = &dqstats.syncs,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0444, .mode = 0444,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
#ifdef CONFIG_PRINT_QUOTA_WARNING #ifdef CONFIG_PRINT_QUOTA_WARNING
{ {
.ctl_name = FS_DQ_WARNINGS,
.procname = "warnings", .procname = "warnings",
.data = &flag_print_warnings, .data = &flag_print_warnings,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = proc_dointvec,
}, },
#endif #endif
{ .ctl_name = 0 }, { },
}; };
static ctl_table fs_table[] = { static ctl_table fs_table[] = {
{ {
.ctl_name = FS_DQSTATS,
.procname = "quota", .procname = "quota",
.mode = 0555, .mode = 0555,
.child = fs_dqstats_table, .child = fs_dqstats_table,
}, },
{ .ctl_name = 0 }, { },
}; };
static ctl_table sys_table[] = { static ctl_table sys_table[] = {
{ {
.ctl_name = CTL_FS,
.procname = "fs", .procname = "fs",
.mode = 0555, .mode = 0555,
.child = fs_table, .child = fs_table,
}, },
{ .ctl_name = 0 }, { },
}; };
static int __init dquot_init(void) static int __init dquot_init(void)

View file

@ -55,170 +55,140 @@ xfs_stats_clear_proc_handler(
static ctl_table xfs_table[] = { static ctl_table xfs_table[] = {
{ {
.ctl_name = XFS_SGID_INHERIT,
.procname = "irix_sgid_inherit", .procname = "irix_sgid_inherit",
.data = &xfs_params.sgid_inherit.val, .data = &xfs_params.sgid_inherit.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.sgid_inherit.min, .extra1 = &xfs_params.sgid_inherit.min,
.extra2 = &xfs_params.sgid_inherit.max .extra2 = &xfs_params.sgid_inherit.max
}, },
{ {
.ctl_name = XFS_SYMLINK_MODE,
.procname = "irix_symlink_mode", .procname = "irix_symlink_mode",
.data = &xfs_params.symlink_mode.val, .data = &xfs_params.symlink_mode.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.symlink_mode.min, .extra1 = &xfs_params.symlink_mode.min,
.extra2 = &xfs_params.symlink_mode.max .extra2 = &xfs_params.symlink_mode.max
}, },
{ {
.ctl_name = XFS_PANIC_MASK,
.procname = "panic_mask", .procname = "panic_mask",
.data = &xfs_params.panic_mask.val, .data = &xfs_params.panic_mask.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.panic_mask.min, .extra1 = &xfs_params.panic_mask.min,
.extra2 = &xfs_params.panic_mask.max .extra2 = &xfs_params.panic_mask.max
}, },
{ {
.ctl_name = XFS_ERRLEVEL,
.procname = "error_level", .procname = "error_level",
.data = &xfs_params.error_level.val, .data = &xfs_params.error_level.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.error_level.min, .extra1 = &xfs_params.error_level.min,
.extra2 = &xfs_params.error_level.max .extra2 = &xfs_params.error_level.max
}, },
{ {
.ctl_name = XFS_SYNCD_TIMER,
.procname = "xfssyncd_centisecs", .procname = "xfssyncd_centisecs",
.data = &xfs_params.syncd_timer.val, .data = &xfs_params.syncd_timer.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.syncd_timer.min, .extra1 = &xfs_params.syncd_timer.min,
.extra2 = &xfs_params.syncd_timer.max .extra2 = &xfs_params.syncd_timer.max
}, },
{ {
.ctl_name = XFS_INHERIT_SYNC,
.procname = "inherit_sync", .procname = "inherit_sync",
.data = &xfs_params.inherit_sync.val, .data = &xfs_params.inherit_sync.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.inherit_sync.min, .extra1 = &xfs_params.inherit_sync.min,
.extra2 = &xfs_params.inherit_sync.max .extra2 = &xfs_params.inherit_sync.max
}, },
{ {
.ctl_name = XFS_INHERIT_NODUMP,
.procname = "inherit_nodump", .procname = "inherit_nodump",
.data = &xfs_params.inherit_nodump.val, .data = &xfs_params.inherit_nodump.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.inherit_nodump.min, .extra1 = &xfs_params.inherit_nodump.min,
.extra2 = &xfs_params.inherit_nodump.max .extra2 = &xfs_params.inherit_nodump.max
}, },
{ {
.ctl_name = XFS_INHERIT_NOATIME,
.procname = "inherit_noatime", .procname = "inherit_noatime",
.data = &xfs_params.inherit_noatim.val, .data = &xfs_params.inherit_noatim.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.inherit_noatim.min, .extra1 = &xfs_params.inherit_noatim.min,
.extra2 = &xfs_params.inherit_noatim.max .extra2 = &xfs_params.inherit_noatim.max
}, },
{ {
.ctl_name = XFS_BUF_TIMER,
.procname = "xfsbufd_centisecs", .procname = "xfsbufd_centisecs",
.data = &xfs_params.xfs_buf_timer.val, .data = &xfs_params.xfs_buf_timer.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.xfs_buf_timer.min, .extra1 = &xfs_params.xfs_buf_timer.min,
.extra2 = &xfs_params.xfs_buf_timer.max .extra2 = &xfs_params.xfs_buf_timer.max
}, },
{ {
.ctl_name = XFS_BUF_AGE,
.procname = "age_buffer_centisecs", .procname = "age_buffer_centisecs",
.data = &xfs_params.xfs_buf_age.val, .data = &xfs_params.xfs_buf_age.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.xfs_buf_age.min, .extra1 = &xfs_params.xfs_buf_age.min,
.extra2 = &xfs_params.xfs_buf_age.max .extra2 = &xfs_params.xfs_buf_age.max
}, },
{ {
.ctl_name = XFS_INHERIT_NOSYM,
.procname = "inherit_nosymlinks", .procname = "inherit_nosymlinks",
.data = &xfs_params.inherit_nosym.val, .data = &xfs_params.inherit_nosym.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.inherit_nosym.min, .extra1 = &xfs_params.inherit_nosym.min,
.extra2 = &xfs_params.inherit_nosym.max .extra2 = &xfs_params.inherit_nosym.max
}, },
{ {
.ctl_name = XFS_ROTORSTEP,
.procname = "rotorstep", .procname = "rotorstep",
.data = &xfs_params.rotorstep.val, .data = &xfs_params.rotorstep.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.rotorstep.min, .extra1 = &xfs_params.rotorstep.min,
.extra2 = &xfs_params.rotorstep.max .extra2 = &xfs_params.rotorstep.max
}, },
{ {
.ctl_name = XFS_INHERIT_NODFRG,
.procname = "inherit_nodefrag", .procname = "inherit_nodefrag",
.data = &xfs_params.inherit_nodfrg.val, .data = &xfs_params.inherit_nodfrg.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.inherit_nodfrg.min, .extra1 = &xfs_params.inherit_nodfrg.min,
.extra2 = &xfs_params.inherit_nodfrg.max .extra2 = &xfs_params.inherit_nodfrg.max
}, },
{ {
.ctl_name = XFS_FILESTREAM_TIMER,
.procname = "filestream_centisecs", .procname = "filestream_centisecs",
.data = &xfs_params.fstrm_timer.val, .data = &xfs_params.fstrm_timer.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.fstrm_timer.min, .extra1 = &xfs_params.fstrm_timer.min,
.extra2 = &xfs_params.fstrm_timer.max, .extra2 = &xfs_params.fstrm_timer.max,
}, },
/* please keep this the last entry */ /* please keep this the last entry */
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
{ {
.ctl_name = XFS_STATS_CLEAR,
.procname = "stats_clear", .procname = "stats_clear",
.data = &xfs_params.stats_clear.val, .data = &xfs_params.stats_clear.val,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = &xfs_stats_clear_proc_handler, .proc_handler = xfs_stats_clear_proc_handler,
.strategy = &sysctl_intvec,
.extra1 = &xfs_params.stats_clear.min, .extra1 = &xfs_params.stats_clear.min,
.extra2 = &xfs_params.stats_clear.max .extra2 = &xfs_params.stats_clear.max
}, },
@ -229,7 +199,6 @@ static ctl_table xfs_table[] = {
static ctl_table xfs_dir_table[] = { static ctl_table xfs_dir_table[] = {
{ {
.ctl_name = FS_XFS,
.procname = "xfs", .procname = "xfs",
.mode = 0555, .mode = 0555,
.child = xfs_table .child = xfs_table
@ -239,7 +208,6 @@ static ctl_table xfs_dir_table[] = {
static ctl_table xfs_root_table[] = { static ctl_table xfs_root_table[] = {
{ {
.ctl_name = CTL_FS,
.procname = "fs", .procname = "fs",
.mode = 0555, .mode = 0555,
.child = xfs_dir_table .child = xfs_dir_table

View file

@ -15,9 +15,6 @@
** The kernel will then return -ENOTDIR to any application using ** The kernel will then return -ENOTDIR to any application using
** the old binary interface. ** the old binary interface.
** **
** For new interfaces unless you really need a binary number
** please use CTL_UNNUMBERED.
**
**************************************************************** ****************************************************************
**************************************************************** ****************************************************************
*/ */
@ -50,12 +47,6 @@ struct __sysctl_args {
/* Top-level names: */ /* Top-level names: */
/* For internal pattern-matching use only: */
#ifdef __KERNEL__
#define CTL_NONE 0
#define CTL_UNNUMBERED CTL_NONE /* sysctl without a binary number */
#endif
enum enum
{ {
CTL_KERN=1, /* General kernel info and control */ CTL_KERN=1, /* General kernel info and control */
@ -972,10 +963,6 @@ extern int sysctl_perm(struct ctl_table_root *root,
typedef struct ctl_table ctl_table; typedef struct ctl_table ctl_table;
typedef int ctl_handler (struct ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen);
typedef int proc_handler (struct ctl_table *ctl, int write, typedef int proc_handler (struct ctl_table *ctl, int write,
void __user *buffer, size_t *lenp, loff_t *ppos); void __user *buffer, size_t *lenp, loff_t *ppos);
@ -996,21 +983,10 @@ extern int proc_doulongvec_minmax(struct ctl_table *, int,
extern int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int, extern int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int,
void __user *, size_t *, loff_t *); void __user *, size_t *, loff_t *);
extern int do_sysctl (int __user *name, int nlen,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen);
extern ctl_handler sysctl_data;
extern ctl_handler sysctl_string;
extern ctl_handler sysctl_intvec;
extern ctl_handler sysctl_jiffies;
extern ctl_handler sysctl_ms_jiffies;
/* /*
* Register a set of sysctl names by calling register_sysctl_table * Register a set of sysctl names by calling register_sysctl_table
* with an initialised array of struct ctl_table's. An entry with zero * with an initialised array of struct ctl_table's. An entry with
* ctl_name and NULL procname terminates the table. table->de will be * NULL procname terminates the table. table->de will be
* set up by the registration and need not be initialised in advance. * set up by the registration and need not be initialised in advance.
* *
* sysctl names can be mirrored automatically under /proc/sys. The * sysctl names can be mirrored automatically under /proc/sys. The
@ -1023,24 +999,11 @@ extern ctl_handler sysctl_ms_jiffies;
* under /proc; non-leaf nodes will be represented by directories. A * under /proc; non-leaf nodes will be represented by directories. A
* null procname disables /proc mirroring at this node. * null procname disables /proc mirroring at this node.
* *
* sysctl entries with a zero ctl_name will not be available through
* the binary sysctl interface.
*
* sysctl(2) can automatically manage read and write requests through * sysctl(2) can automatically manage read and write requests through
* the sysctl table. The data and maxlen fields of the ctl_table * the sysctl table. The data and maxlen fields of the ctl_table
* 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
@ -1050,7 +1013,6 @@ extern ctl_handler sysctl_ms_jiffies;
/* A sysctl table is an array of struct ctl_table: */ /* A sysctl table is an array of struct ctl_table: */
struct ctl_table struct ctl_table
{ {
int ctl_name; /* Binary ID */
const char *procname; /* Text ID for /proc/sys, or zero */ const char *procname; /* Text ID for /proc/sys, or zero */
void *data; void *data;
int maxlen; int maxlen;
@ -1058,7 +1020,6 @@ struct ctl_table
struct ctl_table *child; struct ctl_table *child;
struct ctl_table *parent; /* Automatically set */ struct ctl_table *parent; /* Automatically set */
proc_handler *proc_handler; /* Callback for text formatting */ proc_handler *proc_handler; /* Callback for text formatting */
ctl_handler *strategy; /* Callback function for all r/w */
void *extra1; void *extra1;
void *extra2; void *extra2;
}; };
@ -1092,7 +1053,6 @@ struct ctl_table_header
/* struct ctl_path describes where in the hierarchy a table is added */ /* struct ctl_path describes where in the hierarchy a table is added */
struct ctl_path { struct ctl_path {
const char *procname; const char *procname;
int ctl_name;
}; };
void register_sysctl_root(struct ctl_table_root *root); void register_sysctl_root(struct ctl_table_root *root);

View file

@ -75,7 +75,6 @@ struct dn_dev_parms {
unsigned long t3; /* Default value of t3 */ unsigned long t3; /* Default value of t3 */
int priority; /* Priority to be a router */ int priority; /* Priority to be a router */
char *name; /* Name for sysctl */ char *name; /* Name for sysctl */
int ctl_name; /* Index for sysctl */
int (*up)(struct net_device *); int (*up)(struct net_device *);
void (*down)(struct net_device *); void (*down)(struct net_device *);
void (*timer3)(struct net_device *, struct dn_ifaddr *ifa); void (*timer3)(struct net_device *, struct dn_ifaddr *ifa);

View file

@ -264,8 +264,7 @@ extern int neigh_sysctl_register(struct net_device *dev,
struct neigh_parms *p, struct neigh_parms *p,
int p_id, int pdev_id, int p_id, int pdev_id,
char *p_name, char *p_name,
proc_handler *proc_handler, proc_handler *proc_handler);
ctl_handler *strategy);
extern void neigh_sysctl_unregister(struct neigh_parms *p); extern void neigh_sysctl_unregister(struct neigh_parms *p);
static inline void __neigh_parms_put(struct neigh_parms *parms) static inline void __neigh_parms_put(struct neigh_parms *parms)

View file

@ -763,6 +763,7 @@ config UID16
config SYSCTL_SYSCALL config SYSCTL_SYSCALL
bool "Sysctl syscall support" if EMBEDDED bool "Sysctl syscall support" if EMBEDDED
depends on PROC_SYSCTL
default y default y
select SYSCTL select SYSCTL
---help--- ---help---

View file

@ -129,136 +129,60 @@ static int proc_ipcauto_dointvec_minmax(ctl_table *table, int write,
#define proc_ipcauto_dointvec_minmax NULL #define proc_ipcauto_dointvec_minmax NULL
#endif #endif
#ifdef CONFIG_SYSCTL_SYSCALL
/* The generic sysctl ipc data routine. */
static int sysctl_ipc_data(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
size_t len;
void *data;
/* Get out of I don't have a variable */
if (!table->data || !table->maxlen)
return -ENOTDIR;
data = get_ipc(table);
if (!data)
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, 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(data, newval, newlen))
return -EFAULT;
}
return 1;
}
static int sysctl_ipc_registered_data(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
int rc;
rc = sysctl_ipc_data(table, oldval, oldlenp, newval, newlen);
if (newval && newlen && rc > 0)
/*
* Tunable has successfully been changed from userland
*/
unregister_ipcns_notifier(current->nsproxy->ipc_ns);
return rc;
}
#else
#define sysctl_ipc_data NULL
#define sysctl_ipc_registered_data NULL
#endif
static int zero; static int zero;
static int one = 1; static int one = 1;
static struct ctl_table ipc_kern_table[] = { static struct ctl_table ipc_kern_table[] = {
{ {
.ctl_name = KERN_SHMMAX,
.procname = "shmmax", .procname = "shmmax",
.data = &init_ipc_ns.shm_ctlmax, .data = &init_ipc_ns.shm_ctlmax,
.maxlen = sizeof (init_ipc_ns.shm_ctlmax), .maxlen = sizeof (init_ipc_ns.shm_ctlmax),
.mode = 0644, .mode = 0644,
.proc_handler = proc_ipc_doulongvec_minmax, .proc_handler = proc_ipc_doulongvec_minmax,
.strategy = sysctl_ipc_data,
}, },
{ {
.ctl_name = KERN_SHMALL,
.procname = "shmall", .procname = "shmall",
.data = &init_ipc_ns.shm_ctlall, .data = &init_ipc_ns.shm_ctlall,
.maxlen = sizeof (init_ipc_ns.shm_ctlall), .maxlen = sizeof (init_ipc_ns.shm_ctlall),
.mode = 0644, .mode = 0644,
.proc_handler = proc_ipc_doulongvec_minmax, .proc_handler = proc_ipc_doulongvec_minmax,
.strategy = sysctl_ipc_data,
}, },
{ {
.ctl_name = KERN_SHMMNI,
.procname = "shmmni", .procname = "shmmni",
.data = &init_ipc_ns.shm_ctlmni, .data = &init_ipc_ns.shm_ctlmni,
.maxlen = sizeof (init_ipc_ns.shm_ctlmni), .maxlen = sizeof (init_ipc_ns.shm_ctlmni),
.mode = 0644, .mode = 0644,
.proc_handler = proc_ipc_dointvec, .proc_handler = proc_ipc_dointvec,
.strategy = sysctl_ipc_data,
}, },
{ {
.ctl_name = KERN_MSGMAX,
.procname = "msgmax", .procname = "msgmax",
.data = &init_ipc_ns.msg_ctlmax, .data = &init_ipc_ns.msg_ctlmax,
.maxlen = sizeof (init_ipc_ns.msg_ctlmax), .maxlen = sizeof (init_ipc_ns.msg_ctlmax),
.mode = 0644, .mode = 0644,
.proc_handler = proc_ipc_dointvec, .proc_handler = proc_ipc_dointvec,
.strategy = sysctl_ipc_data,
}, },
{ {
.ctl_name = KERN_MSGMNI,
.procname = "msgmni", .procname = "msgmni",
.data = &init_ipc_ns.msg_ctlmni, .data = &init_ipc_ns.msg_ctlmni,
.maxlen = sizeof (init_ipc_ns.msg_ctlmni), .maxlen = sizeof (init_ipc_ns.msg_ctlmni),
.mode = 0644, .mode = 0644,
.proc_handler = proc_ipc_callback_dointvec, .proc_handler = proc_ipc_callback_dointvec,
.strategy = sysctl_ipc_registered_data,
}, },
{ {
.ctl_name = KERN_MSGMNB,
.procname = "msgmnb", .procname = "msgmnb",
.data = &init_ipc_ns.msg_ctlmnb, .data = &init_ipc_ns.msg_ctlmnb,
.maxlen = sizeof (init_ipc_ns.msg_ctlmnb), .maxlen = sizeof (init_ipc_ns.msg_ctlmnb),
.mode = 0644, .mode = 0644,
.proc_handler = proc_ipc_dointvec, .proc_handler = proc_ipc_dointvec,
.strategy = sysctl_ipc_data,
}, },
{ {
.ctl_name = KERN_SEM,
.procname = "sem", .procname = "sem",
.data = &init_ipc_ns.sem_ctls, .data = &init_ipc_ns.sem_ctls,
.maxlen = 4*sizeof (int), .maxlen = 4*sizeof (int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_ipc_dointvec, .proc_handler = proc_ipc_dointvec,
.strategy = sysctl_ipc_data,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "auto_msgmni", .procname = "auto_msgmni",
.data = &init_ipc_ns.auto_msgmni, .data = &init_ipc_ns.auto_msgmni,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -272,7 +196,6 @@ static struct ctl_table ipc_kern_table[] = {
static struct ctl_table ipc_root_table[] = { static struct ctl_table ipc_root_table[] = {
{ {
.ctl_name = CTL_KERN,
.procname = "kernel", .procname = "kernel",
.mode = 0555, .mode = 0555,
.child = ipc_kern_table, .child = ipc_kern_table,

View file

@ -88,7 +88,7 @@ static ctl_table mq_sysctls[] = {
.extra1 = &msg_maxsize_limit_min, .extra1 = &msg_maxsize_limit_min,
.extra2 = &msg_maxsize_limit_max, .extra2 = &msg_maxsize_limit_max,
}, },
{ .ctl_name = 0 } {}
}; };
static ctl_table mq_sysctl_dir[] = { static ctl_table mq_sysctl_dir[] = {
@ -97,17 +97,16 @@ static ctl_table mq_sysctl_dir[] = {
.mode = 0555, .mode = 0555,
.child = mq_sysctls, .child = mq_sysctls,
}, },
{ .ctl_name = 0 } {}
}; };
static ctl_table mq_sysctl_root[] = { static ctl_table mq_sysctl_root[] = {
{ {
.ctl_name = CTL_FS,
.procname = "fs", .procname = "fs",
.mode = 0555, .mode = 0555,
.child = mq_sysctl_dir, .child = mq_sysctl_dir,
}, },
{ .ctl_name = 0 } {}
}; };
struct ctl_table_header *mq_register_sysctl_table(void) struct ctl_table_header *mq_register_sysctl_table(void)

View file

@ -4,7 +4,7 @@
obj-y = sched.o fork.o exec_domain.o panic.o printk.o \ obj-y = sched.o fork.o exec_domain.o panic.o printk.o \
cpu.o exit.o itimer.o time.o softirq.o resource.o \ cpu.o exit.o itimer.o time.o softirq.o resource.o \
sysctl.o capability.o ptrace.o timer.o user.o \ sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \
signal.o sys.o kmod.o workqueue.o pid.o \ signal.o sys.o kmod.o workqueue.o pid.o \
rcupdate.o extable.o params.o posix-timers.o \ rcupdate.o extable.o params.o posix-timers.o \
kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \ kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \

View file

@ -7444,17 +7444,16 @@ static struct ctl_table sd_ctl_dir[] = {
.procname = "sched_domain", .procname = "sched_domain",
.mode = 0555, .mode = 0555,
}, },
{0, }, {}
}; };
static struct ctl_table sd_ctl_root[] = { static struct ctl_table sd_ctl_root[] = {
{ {
.ctl_name = CTL_KERN,
.procname = "kernel", .procname = "kernel",
.mode = 0555, .mode = 0555,
.child = sd_ctl_dir, .child = sd_ctl_dir,
}, },
{0, }, {}
}; };
static struct ctl_table *sd_alloc_ctl_entry(int n) static struct ctl_table *sd_alloc_ctl_entry(int n)

View file

@ -49,7 +49,6 @@ static const int slow_work_max_vslow = 99;
ctl_table slow_work_sysctls[] = { ctl_table slow_work_sysctls[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "min-threads", .procname = "min-threads",
.data = &slow_work_min_threads, .data = &slow_work_min_threads,
.maxlen = sizeof(unsigned), .maxlen = sizeof(unsigned),
@ -59,7 +58,6 @@ ctl_table slow_work_sysctls[] = {
.extra2 = &slow_work_max_threads, .extra2 = &slow_work_max_threads,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "max-threads", .procname = "max-threads",
.data = &slow_work_max_threads, .data = &slow_work_max_threads,
.maxlen = sizeof(unsigned), .maxlen = sizeof(unsigned),
@ -69,16 +67,15 @@ ctl_table slow_work_sysctls[] = {
.extra2 = (void *) &slow_work_max_max_threads, .extra2 = (void *) &slow_work_max_max_threads,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "vslow-percentage", .procname = "vslow-percentage",
.data = &vslow_work_proportion, .data = &vslow_work_proportion,
.maxlen = sizeof(unsigned), .maxlen = sizeof(unsigned),
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.extra1 = (void *) &slow_work_min_vslow, .extra1 = (void *) &slow_work_min_vslow,
.extra2 = (void *) &slow_work_max_vslow, .extra2 = (void *) &slow_work_max_vslow,
}, },
{ .ctl_name = 0 } {}
}; };
#endif #endif

View file

@ -139,7 +139,6 @@ cond_syscall(sys_pciconfig_read);
cond_syscall(sys_pciconfig_write); cond_syscall(sys_pciconfig_write);
cond_syscall(sys_pciconfig_iobase); cond_syscall(sys_pciconfig_iobase);
cond_syscall(sys32_ipc); cond_syscall(sys32_ipc);
cond_syscall(sys32_sysctl);
cond_syscall(ppc_rtas); cond_syscall(ppc_rtas);
cond_syscall(sys_spu_run); cond_syscall(sys_spu_run);
cond_syscall(sys_spu_create); cond_syscall(sys_spu_create);

File diff suppressed because it is too large Load diff

1507
kernel/sysctl_binary.c Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -57,78 +57,47 @@ static int proc_do_uts_string(ctl_table *table, int write,
#define proc_do_uts_string NULL #define proc_do_uts_string NULL
#endif #endif
#ifdef CONFIG_SYSCTL_SYSCALL
/* The generic string strategy routine: */
static int sysctl_uts_string(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
struct ctl_table uts_table;
int r, write;
write = newval && newlen;
memcpy(&uts_table, table, sizeof(uts_table));
uts_table.data = get_uts(table, write);
r = sysctl_string(&uts_table, oldval, oldlenp, newval, newlen);
put_uts(table, write, uts_table.data);
return r;
}
#else
#define sysctl_uts_string NULL
#endif
static struct ctl_table uts_kern_table[] = { static struct ctl_table uts_kern_table[] = {
{ {
.ctl_name = KERN_OSTYPE,
.procname = "ostype", .procname = "ostype",
.data = init_uts_ns.name.sysname, .data = init_uts_ns.name.sysname,
.maxlen = sizeof(init_uts_ns.name.sysname), .maxlen = sizeof(init_uts_ns.name.sysname),
.mode = 0444, .mode = 0444,
.proc_handler = proc_do_uts_string, .proc_handler = proc_do_uts_string,
.strategy = sysctl_uts_string,
}, },
{ {
.ctl_name = KERN_OSRELEASE,
.procname = "osrelease", .procname = "osrelease",
.data = init_uts_ns.name.release, .data = init_uts_ns.name.release,
.maxlen = sizeof(init_uts_ns.name.release), .maxlen = sizeof(init_uts_ns.name.release),
.mode = 0444, .mode = 0444,
.proc_handler = proc_do_uts_string, .proc_handler = proc_do_uts_string,
.strategy = sysctl_uts_string,
}, },
{ {
.ctl_name = KERN_VERSION,
.procname = "version", .procname = "version",
.data = init_uts_ns.name.version, .data = init_uts_ns.name.version,
.maxlen = sizeof(init_uts_ns.name.version), .maxlen = sizeof(init_uts_ns.name.version),
.mode = 0444, .mode = 0444,
.proc_handler = proc_do_uts_string, .proc_handler = proc_do_uts_string,
.strategy = sysctl_uts_string,
}, },
{ {
.ctl_name = KERN_NODENAME,
.procname = "hostname", .procname = "hostname",
.data = init_uts_ns.name.nodename, .data = init_uts_ns.name.nodename,
.maxlen = sizeof(init_uts_ns.name.nodename), .maxlen = sizeof(init_uts_ns.name.nodename),
.mode = 0644, .mode = 0644,
.proc_handler = proc_do_uts_string, .proc_handler = proc_do_uts_string,
.strategy = sysctl_uts_string,
}, },
{ {
.ctl_name = KERN_DOMAINNAME,
.procname = "domainname", .procname = "domainname",
.data = init_uts_ns.name.domainname, .data = init_uts_ns.name.domainname,
.maxlen = sizeof(init_uts_ns.name.domainname), .maxlen = sizeof(init_uts_ns.name.domainname),
.mode = 0644, .mode = 0644,
.proc_handler = proc_do_uts_string, .proc_handler = proc_do_uts_string,
.strategy = sysctl_uts_string,
}, },
{} {}
}; };
static struct ctl_table uts_root_table[] = { static struct ctl_table uts_root_table[] = {
{ {
.ctl_name = CTL_KERN,
.procname = "kernel", .procname = "kernel",
.mode = 0555, .mode = 0555,
.child = uts_kern_table, .child = uts_kern_table,

View file

@ -912,7 +912,7 @@ config LATENCYTOP
config SYSCTL_SYSCALL_CHECK config SYSCTL_SYSCALL_CHECK
bool "Sysctl checks" bool "Sysctl checks"
depends on SYSCTL_SYSCALL depends on SYSCTL
---help--- ---help---
sys_sysctl uses binary paths that have been found challenging sys_sysctl uses binary paths that have been found challenging
to properly maintain and use. This enables checks that help to properly maintain and use. This enables checks that help

View file

@ -635,19 +635,18 @@ struct net_device *alloc_trdev(int sizeof_priv)
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
static struct ctl_table tr_table[] = { static struct ctl_table tr_table[] = {
{ {
.ctl_name = NET_TR_RIF_TIMEOUT,
.procname = "rif_timeout", .procname = "rif_timeout",
.data = &sysctl_tr_rif_timeout, .data = &sysctl_tr_rif_timeout,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ 0 }, { },
}; };
static __initdata struct ctl_path tr_path[] = { static __initdata struct ctl_path tr_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "token-ring", .ctl_name = NET_TR, }, { .procname = "token-ring", },
{ } { }
}; };
#endif #endif

View file

@ -12,25 +12,20 @@
static struct ctl_table atalk_table[] = { static struct ctl_table atalk_table[] = {
{ {
.ctl_name = NET_ATALK_AARP_EXPIRY_TIME,
.procname = "aarp-expiry-time", .procname = "aarp-expiry-time",
.data = &sysctl_aarp_expiry_time, .data = &sysctl_aarp_expiry_time,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_ATALK_AARP_TICK_TIME,
.procname = "aarp-tick-time", .procname = "aarp-tick-time",
.data = &sysctl_aarp_tick_time, .data = &sysctl_aarp_tick_time,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_ATALK_AARP_RETRANSMIT_LIMIT,
.procname = "aarp-retransmit-limit", .procname = "aarp-retransmit-limit",
.data = &sysctl_aarp_retransmit_limit, .data = &sysctl_aarp_retransmit_limit,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -38,20 +33,18 @@ static struct ctl_table atalk_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_ATALK_AARP_RESOLVE_TIME,
.procname = "aarp-resolve-time", .procname = "aarp-resolve-time",
.data = &sysctl_aarp_resolve_time, .data = &sysctl_aarp_resolve_time,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ 0 }, { },
}; };
static struct ctl_path atalk_path[] = { static struct ctl_path atalk_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "appletalk", .ctl_name = NET_ATALK, }, { .procname = "appletalk", },
{ } { }
}; };

View file

@ -34,156 +34,128 @@ static ctl_table *ax25_table;
static int ax25_table_size; static int ax25_table_size;
static struct ctl_path ax25_path[] = { static struct ctl_path ax25_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ax25", .ctl_name = NET_AX25, }, { .procname = "ax25", },
{ } { }
}; };
static const ctl_table ax25_param_table[] = { static const ctl_table ax25_param_table[] = {
{ {
.ctl_name = NET_AX25_IP_DEFAULT_MODE,
.procname = "ip_default_mode", .procname = "ip_default_mode",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_ipdefmode, .extra1 = &min_ipdefmode,
.extra2 = &max_ipdefmode .extra2 = &max_ipdefmode
}, },
{ {
.ctl_name = NET_AX25_DEFAULT_MODE,
.procname = "ax25_default_mode", .procname = "ax25_default_mode",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_axdefmode, .extra1 = &min_axdefmode,
.extra2 = &max_axdefmode .extra2 = &max_axdefmode
}, },
{ {
.ctl_name = NET_AX25_BACKOFF_TYPE,
.procname = "backoff_type", .procname = "backoff_type",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_backoff, .extra1 = &min_backoff,
.extra2 = &max_backoff .extra2 = &max_backoff
}, },
{ {
.ctl_name = NET_AX25_CONNECT_MODE,
.procname = "connect_mode", .procname = "connect_mode",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_conmode, .extra1 = &min_conmode,
.extra2 = &max_conmode .extra2 = &max_conmode
}, },
{ {
.ctl_name = NET_AX25_STANDARD_WINDOW,
.procname = "standard_window_size", .procname = "standard_window_size",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_window, .extra1 = &min_window,
.extra2 = &max_window .extra2 = &max_window
}, },
{ {
.ctl_name = NET_AX25_EXTENDED_WINDOW,
.procname = "extended_window_size", .procname = "extended_window_size",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_ewindow, .extra1 = &min_ewindow,
.extra2 = &max_ewindow .extra2 = &max_ewindow
}, },
{ {
.ctl_name = NET_AX25_T1_TIMEOUT,
.procname = "t1_timeout", .procname = "t1_timeout",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_t1, .extra1 = &min_t1,
.extra2 = &max_t1 .extra2 = &max_t1
}, },
{ {
.ctl_name = NET_AX25_T2_TIMEOUT,
.procname = "t2_timeout", .procname = "t2_timeout",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_t2, .extra1 = &min_t2,
.extra2 = &max_t2 .extra2 = &max_t2
}, },
{ {
.ctl_name = NET_AX25_T3_TIMEOUT,
.procname = "t3_timeout", .procname = "t3_timeout",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_t3, .extra1 = &min_t3,
.extra2 = &max_t3 .extra2 = &max_t3
}, },
{ {
.ctl_name = NET_AX25_IDLE_TIMEOUT,
.procname = "idle_timeout", .procname = "idle_timeout",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_idle, .extra1 = &min_idle,
.extra2 = &max_idle .extra2 = &max_idle
}, },
{ {
.ctl_name = NET_AX25_N2,
.procname = "maximum_retry_count", .procname = "maximum_retry_count",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_n2, .extra1 = &min_n2,
.extra2 = &max_n2 .extra2 = &max_n2
}, },
{ {
.ctl_name = NET_AX25_PACLEN,
.procname = "maximum_packet_length", .procname = "maximum_packet_length",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_paclen, .extra1 = &min_paclen,
.extra2 = &max_paclen .extra2 = &max_paclen
}, },
{ {
.ctl_name = NET_AX25_PROTOCOL,
.procname = "protocol", .procname = "protocol",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_proto, .extra1 = &min_proto,
.extra2 = &max_proto .extra2 = &max_proto
}, },
#ifdef CONFIG_AX25_DAMA_SLAVE #ifdef CONFIG_AX25_DAMA_SLAVE
{ {
.ctl_name = NET_AX25_DAMA_SLAVE_TIMEOUT,
.procname = "dama_slave_timeout", .procname = "dama_slave_timeout",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_ds_timeout, .extra1 = &min_ds_timeout,
.extra2 = &max_ds_timeout .extra2 = &max_ds_timeout
}, },
#endif #endif
{ .ctl_name = 0 } /* that's all, folks! */ { } /* that's all, folks! */
}; };
void ax25_register_sysctl(void) void ax25_register_sysctl(void)
@ -212,11 +184,9 @@ void ax25_register_sysctl(void)
return; return;
} }
ax25_table[n].child = ax25_dev->systable = child; ax25_table[n].child = ax25_dev->systable = child;
ax25_table[n].ctl_name = n + 1;
ax25_table[n].procname = ax25_dev->dev->name; ax25_table[n].procname = ax25_dev->dev->name;
ax25_table[n].mode = 0555; ax25_table[n].mode = 0555;
child[AX25_MAX_VALUES].ctl_name = 0; /* just in case... */
for (k = 0; k < AX25_MAX_VALUES; k++) for (k = 0; k < AX25_MAX_VALUES; k++)
child[k].data = &ax25_dev->values[k]; child[k].data = &ax25_dev->values[k];
@ -233,7 +203,7 @@ void ax25_unregister_sysctl(void)
ctl_table *p; ctl_table *p;
unregister_sysctl_table(ax25_table_header); unregister_sysctl_table(ax25_table_header);
for (p = ax25_table; p->ctl_name; p++) for (p = ax25_table; p->procname; p++)
kfree(p->child); kfree(p->child);
kfree(ax25_table); kfree(ax25_table);
} }

View file

@ -1013,12 +1013,12 @@ static ctl_table brnf_table[] = {
.mode = 0644, .mode = 0644,
.proc_handler = brnf_sysctl_call_tables, .proc_handler = brnf_sysctl_call_tables,
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_path brnf_path[] = { static struct ctl_path brnf_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "bridge", .ctl_name = NET_BRIDGE, }, { .procname = "bridge", },
{ } { }
}; };
#endif #endif

View file

@ -2566,21 +2566,18 @@ static struct neigh_sysctl_table {
} neigh_sysctl_template __read_mostly = { } neigh_sysctl_template __read_mostly = {
.neigh_vars = { .neigh_vars = {
{ {
.ctl_name = NET_NEIGH_MCAST_SOLICIT,
.procname = "mcast_solicit", .procname = "mcast_solicit",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_NEIGH_UCAST_SOLICIT,
.procname = "ucast_solicit", .procname = "ucast_solicit",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_NEIGH_APP_SOLICIT,
.procname = "app_solicit", .procname = "app_solicit",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
@ -2593,38 +2590,30 @@ static struct neigh_sysctl_table {
.proc_handler = proc_dointvec_userhz_jiffies, .proc_handler = proc_dointvec_userhz_jiffies,
}, },
{ {
.ctl_name = NET_NEIGH_REACHABLE_TIME,
.procname = "base_reachable_time", .procname = "base_reachable_time",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_NEIGH_DELAY_PROBE_TIME,
.procname = "delay_first_probe_time", .procname = "delay_first_probe_time",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_NEIGH_GC_STALE_TIME,
.procname = "gc_stale_time", .procname = "gc_stale_time",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_NEIGH_UNRES_QLEN,
.procname = "unres_qlen", .procname = "unres_qlen",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_NEIGH_PROXY_QLEN,
.procname = "proxy_qlen", .procname = "proxy_qlen",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
@ -2649,45 +2638,36 @@ static struct neigh_sysctl_table {
.proc_handler = proc_dointvec_userhz_jiffies, .proc_handler = proc_dointvec_userhz_jiffies,
}, },
{ {
.ctl_name = NET_NEIGH_RETRANS_TIME_MS,
.procname = "retrans_time_ms", .procname = "retrans_time_ms",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_ms_jiffies, .proc_handler = proc_dointvec_ms_jiffies,
.strategy = sysctl_ms_jiffies,
}, },
{ {
.ctl_name = NET_NEIGH_REACHABLE_TIME_MS,
.procname = "base_reachable_time_ms", .procname = "base_reachable_time_ms",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_ms_jiffies, .proc_handler = proc_dointvec_ms_jiffies,
.strategy = sysctl_ms_jiffies,
}, },
{ {
.ctl_name = NET_NEIGH_GC_INTERVAL,
.procname = "gc_interval", .procname = "gc_interval",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_NEIGH_GC_THRESH1,
.procname = "gc_thresh1", .procname = "gc_thresh1",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_NEIGH_GC_THRESH2,
.procname = "gc_thresh2", .procname = "gc_thresh2",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_NEIGH_GC_THRESH3,
.procname = "gc_thresh3", .procname = "gc_thresh3",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
@ -2699,7 +2679,7 @@ static struct neigh_sysctl_table {
int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p, int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
int p_id, int pdev_id, char *p_name, int p_id, int pdev_id, char *p_name,
proc_handler *handler, ctl_handler *strategy) proc_handler *handler)
{ {
struct neigh_sysctl_table *t; struct neigh_sysctl_table *t;
const char *dev_name_source = NULL; const char *dev_name_source = NULL;
@ -2710,10 +2690,10 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
#define NEIGH_CTL_PATH_DEV 3 #define NEIGH_CTL_PATH_DEV 3
struct ctl_path neigh_path[] = { struct ctl_path neigh_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "proto", .ctl_name = 0, }, { .procname = "proto", },
{ .procname = "neigh", .ctl_name = 0, }, { .procname = "neigh", },
{ .procname = "default", .ctl_name = NET_PROTO_CONF_DEFAULT, }, { .procname = "default", },
{ }, { },
}; };
@ -2738,7 +2718,6 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
if (dev) { if (dev) {
dev_name_source = dev->name; dev_name_source = dev->name;
neigh_path[NEIGH_CTL_PATH_DEV].ctl_name = dev->ifindex;
/* Terminate the table early */ /* Terminate the table early */
memset(&t->neigh_vars[14], 0, sizeof(t->neigh_vars[14])); memset(&t->neigh_vars[14], 0, sizeof(t->neigh_vars[14]));
} else { } else {
@ -2750,31 +2729,19 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
} }
if (handler || strategy) { if (handler) {
/* RetransTime */ /* RetransTime */
t->neigh_vars[3].proc_handler = handler; t->neigh_vars[3].proc_handler = handler;
t->neigh_vars[3].strategy = strategy;
t->neigh_vars[3].extra1 = dev; t->neigh_vars[3].extra1 = dev;
if (!strategy)
t->neigh_vars[3].ctl_name = CTL_UNNUMBERED;
/* ReachableTime */ /* ReachableTime */
t->neigh_vars[4].proc_handler = handler; t->neigh_vars[4].proc_handler = handler;
t->neigh_vars[4].strategy = strategy;
t->neigh_vars[4].extra1 = dev; t->neigh_vars[4].extra1 = dev;
if (!strategy)
t->neigh_vars[4].ctl_name = CTL_UNNUMBERED;
/* RetransTime (in milliseconds)*/ /* RetransTime (in milliseconds)*/
t->neigh_vars[12].proc_handler = handler; t->neigh_vars[12].proc_handler = handler;
t->neigh_vars[12].strategy = strategy;
t->neigh_vars[12].extra1 = dev; t->neigh_vars[12].extra1 = dev;
if (!strategy)
t->neigh_vars[12].ctl_name = CTL_UNNUMBERED;
/* ReachableTime (in milliseconds) */ /* ReachableTime (in milliseconds) */
t->neigh_vars[13].proc_handler = handler; t->neigh_vars[13].proc_handler = handler;
t->neigh_vars[13].strategy = strategy;
t->neigh_vars[13].extra1 = dev; t->neigh_vars[13].extra1 = dev;
if (!strategy)
t->neigh_vars[13].ctl_name = CTL_UNNUMBERED;
} }
t->dev_name = kstrdup(dev_name_source, GFP_KERNEL); t->dev_name = kstrdup(dev_name_source, GFP_KERNEL);
@ -2782,9 +2749,7 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
goto free; goto free;
neigh_path[NEIGH_CTL_PATH_DEV].procname = t->dev_name; neigh_path[NEIGH_CTL_PATH_DEV].procname = t->dev_name;
neigh_path[NEIGH_CTL_PATH_NEIGH].ctl_name = pdev_id;
neigh_path[NEIGH_CTL_PATH_PROTO].procname = p_name; neigh_path[NEIGH_CTL_PATH_PROTO].procname = p_name;
neigh_path[NEIGH_CTL_PATH_PROTO].ctl_name = p_id;
t->sysctl_header = t->sysctl_header =
register_net_sysctl_table(neigh_parms_net(p), neigh_path, t->neigh_vars); register_net_sysctl_table(neigh_parms_net(p), neigh_path, t->neigh_vars);

View file

@ -19,7 +19,6 @@
static struct ctl_table net_core_table[] = { static struct ctl_table net_core_table[] = {
#ifdef CONFIG_NET #ifdef CONFIG_NET
{ {
.ctl_name = NET_CORE_WMEM_MAX,
.procname = "wmem_max", .procname = "wmem_max",
.data = &sysctl_wmem_max, .data = &sysctl_wmem_max,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -27,7 +26,6 @@ static struct ctl_table net_core_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_CORE_RMEM_MAX,
.procname = "rmem_max", .procname = "rmem_max",
.data = &sysctl_rmem_max, .data = &sysctl_rmem_max,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -35,7 +33,6 @@ static struct ctl_table net_core_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_CORE_WMEM_DEFAULT,
.procname = "wmem_default", .procname = "wmem_default",
.data = &sysctl_wmem_default, .data = &sysctl_wmem_default,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -43,7 +40,6 @@ static struct ctl_table net_core_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_CORE_RMEM_DEFAULT,
.procname = "rmem_default", .procname = "rmem_default",
.data = &sysctl_rmem_default, .data = &sysctl_rmem_default,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -51,7 +47,6 @@ static struct ctl_table net_core_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_CORE_DEV_WEIGHT,
.procname = "dev_weight", .procname = "dev_weight",
.data = &weight_p, .data = &weight_p,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -59,7 +54,6 @@ static struct ctl_table net_core_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_CORE_MAX_BACKLOG,
.procname = "netdev_max_backlog", .procname = "netdev_max_backlog",
.data = &netdev_max_backlog, .data = &netdev_max_backlog,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -67,16 +61,13 @@ static struct ctl_table net_core_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_CORE_MSG_COST,
.procname = "message_cost", .procname = "message_cost",
.data = &net_ratelimit_state.interval, .data = &net_ratelimit_state.interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_CORE_MSG_BURST,
.procname = "message_burst", .procname = "message_burst",
.data = &net_ratelimit_state.burst, .data = &net_ratelimit_state.burst,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -84,7 +75,6 @@ static struct ctl_table net_core_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_CORE_OPTMEM_MAX,
.procname = "optmem_max", .procname = "optmem_max",
.data = &sysctl_optmem_max, .data = &sysctl_optmem_max,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -93,7 +83,6 @@ static struct ctl_table net_core_table[] = {
}, },
#endif /* CONFIG_NET */ #endif /* CONFIG_NET */
{ {
.ctl_name = NET_CORE_BUDGET,
.procname = "netdev_budget", .procname = "netdev_budget",
.data = &netdev_budget, .data = &netdev_budget,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -101,31 +90,29 @@ static struct ctl_table net_core_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_CORE_WARNINGS,
.procname = "warnings", .procname = "warnings",
.data = &net_msg_warn, .data = &net_msg_warn,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table netns_core_table[] = { static struct ctl_table netns_core_table[] = {
{ {
.ctl_name = NET_CORE_SOMAXCONN,
.procname = "somaxconn", .procname = "somaxconn",
.data = &init_net.core.sysctl_somaxconn, .data = &init_net.core.sysctl_somaxconn,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ .ctl_name = 0 } { }
}; };
__net_initdata struct ctl_path net_core_path[] = { __net_initdata struct ctl_path net_core_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "core", .ctl_name = NET_CORE, }, { .procname = "core", },
{ }, { },
}; };

View file

@ -93,13 +93,13 @@ static struct ctl_table dccp_default_table[] = {
.proc_handler = proc_dointvec_ms_jiffies, .proc_handler = proc_dointvec_ms_jiffies,
}, },
{ .ctl_name = 0, } { }
}; };
static struct ctl_path dccp_path[] = { static struct ctl_path dccp_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "dccp", .ctl_name = NET_DCCP, }, { .procname = "dccp", },
{ .procname = "default", .ctl_name = NET_DCCP_DEFAULT, }, { .procname = "default", },
{ } { }
}; };

View file

@ -89,7 +89,6 @@ static struct dn_dev_parms dn_dev_list[] = {
.t2 = 1, .t2 = 1,
.t3 = 10, .t3 = 10,
.name = "ethernet", .name = "ethernet",
.ctl_name = NET_DECNET_CONF_ETHER,
.up = dn_eth_up, .up = dn_eth_up,
.down = dn_eth_down, .down = dn_eth_down,
.timer3 = dn_send_brd_hello, .timer3 = dn_send_brd_hello,
@ -101,7 +100,6 @@ static struct dn_dev_parms dn_dev_list[] = {
.t2 = 1, .t2 = 1,
.t3 = 10, .t3 = 10,
.name = "ipgre", .name = "ipgre",
.ctl_name = NET_DECNET_CONF_GRE,
.timer3 = dn_send_brd_hello, .timer3 = dn_send_brd_hello,
}, },
#if 0 #if 0
@ -112,7 +110,6 @@ static struct dn_dev_parms dn_dev_list[] = {
.t2 = 1, .t2 = 1,
.t3 = 120, .t3 = 120,
.name = "x25", .name = "x25",
.ctl_name = NET_DECNET_CONF_X25,
.timer3 = dn_send_ptp_hello, .timer3 = dn_send_ptp_hello,
}, },
#endif #endif
@ -124,7 +121,6 @@ static struct dn_dev_parms dn_dev_list[] = {
.t2 = 1, .t2 = 1,
.t3 = 10, .t3 = 10,
.name = "ppp", .name = "ppp",
.ctl_name = NET_DECNET_CONF_PPP,
.timer3 = dn_send_brd_hello, .timer3 = dn_send_brd_hello,
}, },
#endif #endif
@ -135,7 +131,6 @@ static struct dn_dev_parms dn_dev_list[] = {
.t2 = 1, .t2 = 1,
.t3 = 120, .t3 = 120,
.name = "ddcmp", .name = "ddcmp",
.ctl_name = NET_DECNET_CONF_DDCMP,
.timer3 = dn_send_ptp_hello, .timer3 = dn_send_ptp_hello,
}, },
{ {
@ -145,7 +140,6 @@ static struct dn_dev_parms dn_dev_list[] = {
.t2 = 1, .t2 = 1,
.t3 = 10, .t3 = 10,
.name = "loopback", .name = "loopback",
.ctl_name = NET_DECNET_CONF_LOOPBACK,
.timer3 = dn_send_brd_hello, .timer3 = dn_send_brd_hello,
} }
}; };
@ -166,10 +160,6 @@ static int max_priority[] = { 127 }; /* From DECnet spec */
static int dn_forwarding_proc(ctl_table *, int, static int dn_forwarding_proc(ctl_table *, int,
void __user *, size_t *, loff_t *); void __user *, size_t *, loff_t *);
static int dn_forwarding_sysctl(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen);
static struct dn_dev_sysctl_table { static struct dn_dev_sysctl_table {
struct ctl_table_header *sysctl_header; struct ctl_table_header *sysctl_header;
ctl_table dn_dev_vars[5]; ctl_table dn_dev_vars[5];
@ -177,44 +167,36 @@ static struct dn_dev_sysctl_table {
NULL, NULL,
{ {
{ {
.ctl_name = NET_DECNET_CONF_DEV_FORWARDING,
.procname = "forwarding", .procname = "forwarding",
.data = (void *)DN_DEV_PARMS_OFFSET(forwarding), .data = (void *)DN_DEV_PARMS_OFFSET(forwarding),
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = dn_forwarding_proc, .proc_handler = dn_forwarding_proc,
.strategy = dn_forwarding_sysctl,
}, },
{ {
.ctl_name = NET_DECNET_CONF_DEV_PRIORITY,
.procname = "priority", .procname = "priority",
.data = (void *)DN_DEV_PARMS_OFFSET(priority), .data = (void *)DN_DEV_PARMS_OFFSET(priority),
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_priority, .extra1 = &min_priority,
.extra2 = &max_priority .extra2 = &max_priority
}, },
{ {
.ctl_name = NET_DECNET_CONF_DEV_T2,
.procname = "t2", .procname = "t2",
.data = (void *)DN_DEV_PARMS_OFFSET(t2), .data = (void *)DN_DEV_PARMS_OFFSET(t2),
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_t2, .extra1 = &min_t2,
.extra2 = &max_t2 .extra2 = &max_t2
}, },
{ {
.ctl_name = NET_DECNET_CONF_DEV_T3,
.procname = "t3", .procname = "t3",
.data = (void *)DN_DEV_PARMS_OFFSET(t3), .data = (void *)DN_DEV_PARMS_OFFSET(t3),
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_t3, .extra1 = &min_t3,
.extra2 = &max_t3 .extra2 = &max_t3
}, },
@ -230,9 +212,9 @@ static void dn_dev_sysctl_register(struct net_device *dev, struct dn_dev_parms *
#define DN_CTL_PATH_DEV 3 #define DN_CTL_PATH_DEV 3
struct ctl_path dn_ctl_path[] = { struct ctl_path dn_ctl_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "decnet", .ctl_name = NET_DECNET, }, { .procname = "decnet", },
{ .procname = "conf", .ctl_name = NET_DECNET_CONF, }, { .procname = "conf", },
{ /* to be set */ }, { /* to be set */ },
{ }, { },
}; };
@ -248,10 +230,8 @@ static void dn_dev_sysctl_register(struct net_device *dev, struct dn_dev_parms *
if (dev) { if (dev) {
dn_ctl_path[DN_CTL_PATH_DEV].procname = dev->name; dn_ctl_path[DN_CTL_PATH_DEV].procname = dev->name;
dn_ctl_path[DN_CTL_PATH_DEV].ctl_name = dev->ifindex;
} else { } else {
dn_ctl_path[DN_CTL_PATH_DEV].procname = parms->name; dn_ctl_path[DN_CTL_PATH_DEV].procname = parms->name;
dn_ctl_path[DN_CTL_PATH_DEV].ctl_name = parms->ctl_name;
} }
t->dn_dev_vars[0].extra1 = (void *)dev; t->dn_dev_vars[0].extra1 = (void *)dev;
@ -317,44 +297,6 @@ static int dn_forwarding_proc(ctl_table *table, int write,
#endif #endif
} }
static int dn_forwarding_sysctl(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
#ifdef CONFIG_DECNET_ROUTER
struct net_device *dev = table->extra1;
struct dn_dev *dn_db;
int value;
if (table->extra1 == NULL)
return -EINVAL;
dn_db = dev->dn_ptr;
if (newval && newlen) {
if (newlen != sizeof(int))
return -EINVAL;
if (get_user(value, (int __user *)newval))
return -EFAULT;
if (value < 0)
return -EINVAL;
if (value > 2)
return -EINVAL;
if (dn_db->parms.down)
dn_db->parms.down(dev);
dn_db->parms.forwarding = value;
if (dn_db->parms.up)
dn_db->parms.up(dev);
}
return 0;
#else
return -EINVAL;
#endif
}
#else /* CONFIG_SYSCTL */ #else /* CONFIG_SYSCTL */
static void dn_dev_sysctl_unregister(struct dn_dev_parms *parms) static void dn_dev_sysctl_unregister(struct dn_dev_parms *parms)
{ {

View file

@ -131,39 +131,6 @@ static int parse_addr(__le16 *addr, char *str)
return 0; return 0;
} }
static int dn_node_address_strategy(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
size_t len;
__le16 addr;
if (oldval && oldlenp) {
if (get_user(len, oldlenp))
return -EFAULT;
if (len) {
if (len != sizeof(unsigned short))
return -EINVAL;
if (put_user(decnet_address, (__le16 __user *)oldval))
return -EFAULT;
}
}
if (newval && newlen) {
if (newlen != sizeof(unsigned short))
return -EINVAL;
if (get_user(addr, (__le16 __user *)newval))
return -EFAULT;
dn_dev_devices_off();
decnet_address = addr;
dn_dev_devices_on();
}
return 0;
}
static int dn_node_address_handler(ctl_table *table, int write, static int dn_node_address_handler(ctl_table *table, int write,
void __user *buffer, void __user *buffer,
size_t *lenp, loff_t *ppos) size_t *lenp, loff_t *ppos)
@ -215,64 +182,6 @@ static int dn_node_address_handler(ctl_table *table, int write,
return 0; return 0;
} }
static int dn_def_dev_strategy(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
size_t len;
struct net_device *dev;
char devname[17];
size_t namel;
int rv = 0;
devname[0] = 0;
if (oldval && oldlenp) {
if (get_user(len, oldlenp))
return -EFAULT;
if (len) {
dev = dn_dev_get_default();
if (dev) {
strcpy(devname, dev->name);
dev_put(dev);
}
namel = strlen(devname) + 1;
if (len > namel) len = namel;
if (copy_to_user(oldval, devname, len))
return -EFAULT;
if (put_user(len, oldlenp))
return -EFAULT;
}
}
if (newval && newlen) {
if (newlen > 16)
return -E2BIG;
if (copy_from_user(devname, newval, newlen))
return -EFAULT;
devname[newlen] = 0;
dev = dev_get_by_name(&init_net, devname);
if (dev == NULL)
return -ENODEV;
rv = -ENODEV;
if (dev->dn_ptr != NULL)
rv = dn_dev_set_default(dev, 1);
if (rv)
dev_put(dev);
}
return rv;
}
static int dn_def_dev_handler(ctl_table *table, int write, static int dn_def_dev_handler(ctl_table *table, int write,
void __user *buffer, void __user *buffer,
size_t *lenp, loff_t *ppos) size_t *lenp, loff_t *ppos)
@ -338,138 +247,112 @@ static int dn_def_dev_handler(ctl_table *table, int write,
static ctl_table dn_table[] = { static ctl_table dn_table[] = {
{ {
.ctl_name = NET_DECNET_NODE_ADDRESS,
.procname = "node_address", .procname = "node_address",
.maxlen = 7, .maxlen = 7,
.mode = 0644, .mode = 0644,
.proc_handler = dn_node_address_handler, .proc_handler = dn_node_address_handler,
.strategy = dn_node_address_strategy,
}, },
{ {
.ctl_name = NET_DECNET_NODE_NAME,
.procname = "node_name", .procname = "node_name",
.data = node_name, .data = node_name,
.maxlen = 7, .maxlen = 7,
.mode = 0644, .mode = 0644,
.proc_handler = proc_dostring, .proc_handler = proc_dostring,
.strategy = sysctl_string,
}, },
{ {
.ctl_name = NET_DECNET_DEFAULT_DEVICE,
.procname = "default_device", .procname = "default_device",
.maxlen = 16, .maxlen = 16,
.mode = 0644, .mode = 0644,
.proc_handler = dn_def_dev_handler, .proc_handler = dn_def_dev_handler,
.strategy = dn_def_dev_strategy,
}, },
{ {
.ctl_name = NET_DECNET_TIME_WAIT,
.procname = "time_wait", .procname = "time_wait",
.data = &decnet_time_wait, .data = &decnet_time_wait,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_decnet_time_wait, .extra1 = &min_decnet_time_wait,
.extra2 = &max_decnet_time_wait .extra2 = &max_decnet_time_wait
}, },
{ {
.ctl_name = NET_DECNET_DN_COUNT,
.procname = "dn_count", .procname = "dn_count",
.data = &decnet_dn_count, .data = &decnet_dn_count,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_state_count, .extra1 = &min_state_count,
.extra2 = &max_state_count .extra2 = &max_state_count
}, },
{ {
.ctl_name = NET_DECNET_DI_COUNT,
.procname = "di_count", .procname = "di_count",
.data = &decnet_di_count, .data = &decnet_di_count,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_state_count, .extra1 = &min_state_count,
.extra2 = &max_state_count .extra2 = &max_state_count
}, },
{ {
.ctl_name = NET_DECNET_DR_COUNT,
.procname = "dr_count", .procname = "dr_count",
.data = &decnet_dr_count, .data = &decnet_dr_count,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_state_count, .extra1 = &min_state_count,
.extra2 = &max_state_count .extra2 = &max_state_count
}, },
{ {
.ctl_name = NET_DECNET_DST_GC_INTERVAL,
.procname = "dst_gc_interval", .procname = "dst_gc_interval",
.data = &decnet_dst_gc_interval, .data = &decnet_dst_gc_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_decnet_dst_gc_interval, .extra1 = &min_decnet_dst_gc_interval,
.extra2 = &max_decnet_dst_gc_interval .extra2 = &max_decnet_dst_gc_interval
}, },
{ {
.ctl_name = NET_DECNET_NO_FC_MAX_CWND,
.procname = "no_fc_max_cwnd", .procname = "no_fc_max_cwnd",
.data = &decnet_no_fc_max_cwnd, .data = &decnet_no_fc_max_cwnd,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &min_decnet_no_fc_max_cwnd, .extra1 = &min_decnet_no_fc_max_cwnd,
.extra2 = &max_decnet_no_fc_max_cwnd .extra2 = &max_decnet_no_fc_max_cwnd
}, },
{ {
.ctl_name = NET_DECNET_MEM,
.procname = "decnet_mem", .procname = "decnet_mem",
.data = &sysctl_decnet_mem, .data = &sysctl_decnet_mem,
.maxlen = sizeof(sysctl_decnet_mem), .maxlen = sizeof(sysctl_decnet_mem),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
.strategy = sysctl_intvec,
}, },
{ {
.ctl_name = NET_DECNET_RMEM,
.procname = "decnet_rmem", .procname = "decnet_rmem",
.data = &sysctl_decnet_rmem, .data = &sysctl_decnet_rmem,
.maxlen = sizeof(sysctl_decnet_rmem), .maxlen = sizeof(sysctl_decnet_rmem),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
.strategy = sysctl_intvec,
}, },
{ {
.ctl_name = NET_DECNET_WMEM,
.procname = "decnet_wmem", .procname = "decnet_wmem",
.data = &sysctl_decnet_wmem, .data = &sysctl_decnet_wmem,
.maxlen = sizeof(sysctl_decnet_wmem), .maxlen = sizeof(sysctl_decnet_wmem),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
.strategy = sysctl_intvec,
}, },
{ {
.ctl_name = NET_DECNET_DEBUG_LEVEL,
.procname = "debug", .procname = "debug",
.data = &decnet_debug_level, .data = &decnet_debug_level,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
.strategy = sysctl_intvec,
}, },
{0} { }
}; };
static struct ctl_path dn_path[] = { static struct ctl_path dn_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "decnet", .ctl_name = NET_DECNET, }, { .procname = "decnet", },
{ } { }
}; };

View file

@ -1240,7 +1240,7 @@ void __init arp_init(void)
arp_proc_init(); arp_proc_init();
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
neigh_sysctl_register(NULL, &arp_tbl.parms, NET_IPV4, neigh_sysctl_register(NULL, &arp_tbl.parms, NET_IPV4,
NET_IPV4_NEIGH, "ipv4", NULL, NULL); NET_IPV4_NEIGH, "ipv4", NULL);
#endif #endif
register_netdevice_notifier(&arp_netdev_notifier); register_netdevice_notifier(&arp_netdev_notifier);
} }

View file

@ -1293,58 +1293,6 @@ static int devinet_conf_proc(ctl_table *ctl, int write,
return ret; return ret;
} }
static int devinet_conf_sysctl(ctl_table *table,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
struct ipv4_devconf *cnf;
struct net *net;
int *valp = table->data;
int new;
int i;
if (!newval || !newlen)
return 0;
if (newlen != sizeof(int))
return -EINVAL;
if (get_user(new, (int __user *)newval))
return -EFAULT;
if (new == *valp)
return 0;
if (oldval && oldlenp) {
size_t len;
if (get_user(len, oldlenp))
return -EFAULT;
if (len) {
if (len > table->maxlen)
len = table->maxlen;
if (copy_to_user(oldval, valp, len))
return -EFAULT;
if (put_user(len, oldlenp))
return -EFAULT;
}
}
*valp = new;
cnf = table->extra1;
net = table->extra2;
i = (int *)table->data - cnf->data;
set_bit(i, cnf->state);
if (cnf == net->ipv4.devconf_dflt)
devinet_copy_dflt_conf(net, i);
return 1;
}
static int devinet_sysctl_forward(ctl_table *ctl, int write, static int devinet_sysctl_forward(ctl_table *ctl, int write,
void __user *buffer, void __user *buffer,
size_t *lenp, loff_t *ppos) size_t *lenp, loff_t *ppos)
@ -1390,47 +1338,28 @@ int ipv4_doint_and_flush(ctl_table *ctl, int write,
return ret; return ret;
} }
int ipv4_doint_and_flush_strategy(ctl_table *table, #define DEVINET_SYSCTL_ENTRY(attr, name, mval, proc) \
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
int ret = devinet_conf_sysctl(table, oldval, oldlenp, newval, newlen);
struct net *net = table->extra2;
if (ret == 1)
rt_cache_flush(net, 0);
return ret;
}
#define DEVINET_SYSCTL_ENTRY(attr, name, mval, proc, sysctl) \
{ \ { \
.ctl_name = NET_IPV4_CONF_ ## attr, \
.procname = name, \ .procname = name, \
.data = ipv4_devconf.data + \ .data = ipv4_devconf.data + \
NET_IPV4_CONF_ ## attr - 1, \ NET_IPV4_CONF_ ## attr - 1, \
.maxlen = sizeof(int), \ .maxlen = sizeof(int), \
.mode = mval, \ .mode = mval, \
.proc_handler = proc, \ .proc_handler = proc, \
.strategy = sysctl, \
.extra1 = &ipv4_devconf, \ .extra1 = &ipv4_devconf, \
} }
#define DEVINET_SYSCTL_RW_ENTRY(attr, name) \ #define DEVINET_SYSCTL_RW_ENTRY(attr, name) \
DEVINET_SYSCTL_ENTRY(attr, name, 0644, devinet_conf_proc, \ DEVINET_SYSCTL_ENTRY(attr, name, 0644, devinet_conf_proc)
devinet_conf_sysctl)
#define DEVINET_SYSCTL_RO_ENTRY(attr, name) \ #define DEVINET_SYSCTL_RO_ENTRY(attr, name) \
DEVINET_SYSCTL_ENTRY(attr, name, 0444, devinet_conf_proc, \ DEVINET_SYSCTL_ENTRY(attr, name, 0444, devinet_conf_proc)
devinet_conf_sysctl)
#define DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, proc, sysctl) \ #define DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, proc) \
DEVINET_SYSCTL_ENTRY(attr, name, 0644, proc, sysctl) DEVINET_SYSCTL_ENTRY(attr, name, 0644, proc)
#define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \ #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \
DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush, \ DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush)
ipv4_doint_and_flush_strategy)
static struct devinet_sysctl_table { static struct devinet_sysctl_table {
struct ctl_table_header *sysctl_header; struct ctl_table_header *sysctl_header;
@ -1439,8 +1368,7 @@ static struct devinet_sysctl_table {
} devinet_sysctl = { } devinet_sysctl = {
.devinet_vars = { .devinet_vars = {
DEVINET_SYSCTL_COMPLEX_ENTRY(FORWARDING, "forwarding", DEVINET_SYSCTL_COMPLEX_ENTRY(FORWARDING, "forwarding",
devinet_sysctl_forward, devinet_sysctl_forward),
devinet_conf_sysctl),
DEVINET_SYSCTL_RO_ENTRY(MC_FORWARDING, "mc_forwarding"), DEVINET_SYSCTL_RO_ENTRY(MC_FORWARDING, "mc_forwarding"),
DEVINET_SYSCTL_RW_ENTRY(ACCEPT_REDIRECTS, "accept_redirects"), DEVINET_SYSCTL_RW_ENTRY(ACCEPT_REDIRECTS, "accept_redirects"),
@ -1471,7 +1399,7 @@ static struct devinet_sysctl_table {
}; };
static int __devinet_sysctl_register(struct net *net, char *dev_name, static int __devinet_sysctl_register(struct net *net, char *dev_name,
int ctl_name, struct ipv4_devconf *p) struct ipv4_devconf *p)
{ {
int i; int i;
struct devinet_sysctl_table *t; struct devinet_sysctl_table *t;
@ -1479,9 +1407,9 @@ static int __devinet_sysctl_register(struct net *net, char *dev_name,
#define DEVINET_CTL_PATH_DEV 3 #define DEVINET_CTL_PATH_DEV 3
struct ctl_path devinet_ctl_path[] = { struct ctl_path devinet_ctl_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ipv4", .ctl_name = NET_IPV4, }, { .procname = "ipv4", },
{ .procname = "conf", .ctl_name = NET_IPV4_CONF, }, { .procname = "conf", },
{ /* to be set */ }, { /* to be set */ },
{ }, { },
}; };
@ -1506,7 +1434,6 @@ static int __devinet_sysctl_register(struct net *net, char *dev_name,
goto free; goto free;
devinet_ctl_path[DEVINET_CTL_PATH_DEV].procname = t->dev_name; devinet_ctl_path[DEVINET_CTL_PATH_DEV].procname = t->dev_name;
devinet_ctl_path[DEVINET_CTL_PATH_DEV].ctl_name = ctl_name;
t->sysctl_header = register_net_sysctl_table(net, devinet_ctl_path, t->sysctl_header = register_net_sysctl_table(net, devinet_ctl_path,
t->devinet_vars); t->devinet_vars);
@ -1540,9 +1467,9 @@ static void __devinet_sysctl_unregister(struct ipv4_devconf *cnf)
static void devinet_sysctl_register(struct in_device *idev) static void devinet_sysctl_register(struct in_device *idev)
{ {
neigh_sysctl_register(idev->dev, idev->arp_parms, NET_IPV4, neigh_sysctl_register(idev->dev, idev->arp_parms, NET_IPV4,
NET_IPV4_NEIGH, "ipv4", NULL, NULL); NET_IPV4_NEIGH, "ipv4", NULL);
__devinet_sysctl_register(dev_net(idev->dev), idev->dev->name, __devinet_sysctl_register(dev_net(idev->dev), idev->dev->name,
idev->dev->ifindex, &idev->cnf); &idev->cnf);
} }
static void devinet_sysctl_unregister(struct in_device *idev) static void devinet_sysctl_unregister(struct in_device *idev)
@ -1553,14 +1480,12 @@ static void devinet_sysctl_unregister(struct in_device *idev)
static struct ctl_table ctl_forward_entry[] = { static struct ctl_table ctl_forward_entry[] = {
{ {
.ctl_name = NET_IPV4_FORWARD,
.procname = "ip_forward", .procname = "ip_forward",
.data = &ipv4_devconf.data[ .data = &ipv4_devconf.data[
NET_IPV4_CONF_FORWARDING - 1], NET_IPV4_CONF_FORWARDING - 1],
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = devinet_sysctl_forward, .proc_handler = devinet_sysctl_forward,
.strategy = devinet_conf_sysctl,
.extra1 = &ipv4_devconf, .extra1 = &ipv4_devconf,
.extra2 = &init_net, .extra2 = &init_net,
}, },
@ -1568,8 +1493,8 @@ static struct ctl_table ctl_forward_entry[] = {
}; };
static __net_initdata struct ctl_path net_ipv4_path[] = { static __net_initdata struct ctl_path net_ipv4_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ipv4", .ctl_name = NET_IPV4, }, { .procname = "ipv4", },
{ }, { },
}; };
#endif #endif
@ -1608,13 +1533,11 @@ static __net_init int devinet_init_net(struct net *net)
} }
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
err = __devinet_sysctl_register(net, "all", err = __devinet_sysctl_register(net, "all", all);
NET_PROTO_CONF_ALL, all);
if (err < 0) if (err < 0)
goto err_reg_all; goto err_reg_all;
err = __devinet_sysctl_register(net, "default", err = __devinet_sysctl_register(net, "default", dflt);
NET_PROTO_CONF_DEFAULT, dflt);
if (err < 0) if (err < 0)
goto err_reg_dflt; goto err_reg_dflt;

View file

@ -603,7 +603,6 @@ static int zero;
static struct ctl_table ip4_frags_ns_ctl_table[] = { static struct ctl_table ip4_frags_ns_ctl_table[] = {
{ {
.ctl_name = NET_IPV4_IPFRAG_HIGH_THRESH,
.procname = "ipfrag_high_thresh", .procname = "ipfrag_high_thresh",
.data = &init_net.ipv4.frags.high_thresh, .data = &init_net.ipv4.frags.high_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -611,7 +610,6 @@ static struct ctl_table ip4_frags_ns_ctl_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_IPFRAG_LOW_THRESH,
.procname = "ipfrag_low_thresh", .procname = "ipfrag_low_thresh",
.data = &init_net.ipv4.frags.low_thresh, .data = &init_net.ipv4.frags.low_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -619,26 +617,22 @@ static struct ctl_table ip4_frags_ns_ctl_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_IPFRAG_TIME,
.procname = "ipfrag_time", .procname = "ipfrag_time",
.data = &init_net.ipv4.frags.timeout, .data = &init_net.ipv4.frags.timeout,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
{ } { }
}; };
static struct ctl_table ip4_frags_ctl_table[] = { static struct ctl_table ip4_frags_ctl_table[] = {
{ {
.ctl_name = NET_IPV4_IPFRAG_SECRET_INTERVAL,
.procname = "ipfrag_secret_interval", .procname = "ipfrag_secret_interval",
.data = &ip4_frags.secret_interval, .data = &ip4_frags.secret_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
{ {
.procname = "ipfrag_max_dist", .procname = "ipfrag_max_dist",

View file

@ -248,9 +248,9 @@ module_exit(ipv4_netfilter_fini);
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
struct ctl_path nf_net_ipv4_netfilter_sysctl_path[] = { struct ctl_path nf_net_ipv4_netfilter_sysctl_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ipv4", .ctl_name = NET_IPV4, }, { .procname = "ipv4", },
{ .procname = "netfilter", .ctl_name = NET_IPV4_NETFILTER, }, { .procname = "netfilter", },
{ } { }
}; };
EXPORT_SYMBOL_GPL(nf_net_ipv4_netfilter_sysctl_path); EXPORT_SYMBOL_GPL(nf_net_ipv4_netfilter_sysctl_path);

View file

@ -516,14 +516,13 @@ static struct ctl_table_header *ipq_sysctl_header;
static ctl_table ipq_table[] = { static ctl_table ipq_table[] = {
{ {
.ctl_name = NET_IPQ_QMAX,
.procname = NET_IPQ_QMAX_NAME, .procname = NET_IPQ_QMAX_NAME,
.data = &queue_maxlen, .data = &queue_maxlen,
.maxlen = sizeof(queue_maxlen), .maxlen = sizeof(queue_maxlen),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ .ctl_name = 0 } { }
}; };
#endif #endif

View file

@ -195,7 +195,6 @@ static int log_invalid_proto_max = 255;
static ctl_table ip_ct_sysctl_table[] = { static ctl_table ip_ct_sysctl_table[] = {
{ {
.ctl_name = NET_IPV4_NF_CONNTRACK_MAX,
.procname = "ip_conntrack_max", .procname = "ip_conntrack_max",
.data = &nf_conntrack_max, .data = &nf_conntrack_max,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -203,7 +202,6 @@ static ctl_table ip_ct_sysctl_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_NF_CONNTRACK_COUNT,
.procname = "ip_conntrack_count", .procname = "ip_conntrack_count",
.data = &init_net.ct.count, .data = &init_net.ct.count,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -211,7 +209,6 @@ static ctl_table ip_ct_sysctl_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_NF_CONNTRACK_BUCKETS,
.procname = "ip_conntrack_buckets", .procname = "ip_conntrack_buckets",
.data = &nf_conntrack_htable_size, .data = &nf_conntrack_htable_size,
.maxlen = sizeof(unsigned int), .maxlen = sizeof(unsigned int),
@ -219,7 +216,6 @@ static ctl_table ip_ct_sysctl_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_NF_CONNTRACK_CHECKSUM,
.procname = "ip_conntrack_checksum", .procname = "ip_conntrack_checksum",
.data = &init_net.ct.sysctl_checksum, .data = &init_net.ct.sysctl_checksum,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -227,19 +223,15 @@ static ctl_table ip_ct_sysctl_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_NF_CONNTRACK_LOG_INVALID,
.procname = "ip_conntrack_log_invalid", .procname = "ip_conntrack_log_invalid",
.data = &init_net.ct.sysctl_log_invalid, .data = &init_net.ct.sysctl_log_invalid,
.maxlen = sizeof(unsigned int), .maxlen = sizeof(unsigned int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &log_invalid_proto_min, .extra1 = &log_invalid_proto_min,
.extra2 = &log_invalid_proto_max, .extra2 = &log_invalid_proto_max,
}, },
{ { }
.ctl_name = 0
}
}; };
#endif /* CONFIG_SYSCTL && CONFIG_NF_CONNTRACK_PROC_COMPAT */ #endif /* CONFIG_SYSCTL && CONFIG_NF_CONNTRACK_PROC_COMPAT */

View file

@ -270,9 +270,7 @@ static struct ctl_table icmp_sysctl_table[] = {
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
}, },
{ { }
.ctl_name = 0
}
}; };
#ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT #ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
static struct ctl_table icmp_compat_sysctl_table[] = { static struct ctl_table icmp_compat_sysctl_table[] = {
@ -283,9 +281,7 @@ static struct ctl_table icmp_compat_sysctl_table[] = {
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
}, },
{ { }
.ctl_name = 0
}
}; };
#endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */ #endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */

View file

@ -3056,23 +3056,6 @@ static int ipv4_sysctl_rtcache_flush(ctl_table *__ctl, int write,
return -EINVAL; return -EINVAL;
} }
static int ipv4_sysctl_rtcache_flush_strategy(ctl_table *table,
void __user *oldval,
size_t __user *oldlenp,
void __user *newval,
size_t newlen)
{
int delay;
struct net *net;
if (newlen != sizeof(int))
return -EINVAL;
if (get_user(delay, (int __user *)newval))
return -EFAULT;
net = (struct net *)table->extra1;
rt_cache_flush(net, delay);
return 0;
}
static void rt_secret_reschedule(int old) static void rt_secret_reschedule(int old)
{ {
struct net *net; struct net *net;
@ -3117,23 +3100,8 @@ static int ipv4_sysctl_rt_secret_interval(ctl_table *ctl, int write,
return ret; return ret;
} }
static int ipv4_sysctl_rt_secret_interval_strategy(ctl_table *table,
void __user *oldval,
size_t __user *oldlenp,
void __user *newval,
size_t newlen)
{
int old = ip_rt_secret_interval;
int ret = sysctl_jiffies(table, oldval, oldlenp, newval, newlen);
rt_secret_reschedule(old);
return ret;
}
static ctl_table ipv4_route_table[] = { static ctl_table ipv4_route_table[] = {
{ {
.ctl_name = NET_IPV4_ROUTE_GC_THRESH,
.procname = "gc_thresh", .procname = "gc_thresh",
.data = &ipv4_dst_ops.gc_thresh, .data = &ipv4_dst_ops.gc_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3141,7 +3109,6 @@ static ctl_table ipv4_route_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_MAX_SIZE,
.procname = "max_size", .procname = "max_size",
.data = &ip_rt_max_size, .data = &ip_rt_max_size,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3151,43 +3118,34 @@ static ctl_table ipv4_route_table[] = {
{ {
/* Deprecated. Use gc_min_interval_ms */ /* Deprecated. Use gc_min_interval_ms */
.ctl_name = NET_IPV4_ROUTE_GC_MIN_INTERVAL,
.procname = "gc_min_interval", .procname = "gc_min_interval",
.data = &ip_rt_gc_min_interval, .data = &ip_rt_gc_min_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS,
.procname = "gc_min_interval_ms", .procname = "gc_min_interval_ms",
.data = &ip_rt_gc_min_interval, .data = &ip_rt_gc_min_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_ms_jiffies, .proc_handler = proc_dointvec_ms_jiffies,
.strategy = sysctl_ms_jiffies,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_GC_TIMEOUT,
.procname = "gc_timeout", .procname = "gc_timeout",
.data = &ip_rt_gc_timeout, .data = &ip_rt_gc_timeout,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_GC_INTERVAL,
.procname = "gc_interval", .procname = "gc_interval",
.data = &ip_rt_gc_interval, .data = &ip_rt_gc_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_REDIRECT_LOAD,
.procname = "redirect_load", .procname = "redirect_load",
.data = &ip_rt_redirect_load, .data = &ip_rt_redirect_load,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3195,7 +3153,6 @@ static ctl_table ipv4_route_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_REDIRECT_NUMBER,
.procname = "redirect_number", .procname = "redirect_number",
.data = &ip_rt_redirect_number, .data = &ip_rt_redirect_number,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3203,7 +3160,6 @@ static ctl_table ipv4_route_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_REDIRECT_SILENCE,
.procname = "redirect_silence", .procname = "redirect_silence",
.data = &ip_rt_redirect_silence, .data = &ip_rt_redirect_silence,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3211,7 +3167,6 @@ static ctl_table ipv4_route_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_ERROR_COST,
.procname = "error_cost", .procname = "error_cost",
.data = &ip_rt_error_cost, .data = &ip_rt_error_cost,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3219,7 +3174,6 @@ static ctl_table ipv4_route_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_ERROR_BURST,
.procname = "error_burst", .procname = "error_burst",
.data = &ip_rt_error_burst, .data = &ip_rt_error_burst,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3227,7 +3181,6 @@ static ctl_table ipv4_route_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_GC_ELASTICITY,
.procname = "gc_elasticity", .procname = "gc_elasticity",
.data = &ip_rt_gc_elasticity, .data = &ip_rt_gc_elasticity,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3235,16 +3188,13 @@ static ctl_table ipv4_route_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_MTU_EXPIRES,
.procname = "mtu_expires", .procname = "mtu_expires",
.data = &ip_rt_mtu_expires, .data = &ip_rt_mtu_expires,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_MIN_PMTU,
.procname = "min_pmtu", .procname = "min_pmtu",
.data = &ip_rt_min_pmtu, .data = &ip_rt_min_pmtu,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3252,7 +3202,6 @@ static ctl_table ipv4_route_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_MIN_ADVMSS,
.procname = "min_adv_mss", .procname = "min_adv_mss",
.data = &ip_rt_min_advmss, .data = &ip_rt_min_advmss,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -3260,50 +3209,46 @@ static ctl_table ipv4_route_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_ROUTE_SECRET_INTERVAL,
.procname = "secret_interval", .procname = "secret_interval",
.data = &ip_rt_secret_interval, .data = &ip_rt_secret_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = ipv4_sysctl_rt_secret_interval, .proc_handler = ipv4_sysctl_rt_secret_interval,
.strategy = ipv4_sysctl_rt_secret_interval_strategy,
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table empty[1]; static struct ctl_table empty[1];
static struct ctl_table ipv4_skeleton[] = static struct ctl_table ipv4_skeleton[] =
{ {
{ .procname = "route", .ctl_name = NET_IPV4_ROUTE, { .procname = "route",
.mode = 0555, .child = ipv4_route_table}, .mode = 0555, .child = ipv4_route_table},
{ .procname = "neigh", .ctl_name = NET_IPV4_NEIGH, { .procname = "neigh",
.mode = 0555, .child = empty}, .mode = 0555, .child = empty},
{ } { }
}; };
static __net_initdata struct ctl_path ipv4_path[] = { static __net_initdata struct ctl_path ipv4_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ipv4", .ctl_name = NET_IPV4, }, { .procname = "ipv4", },
{ }, { },
}; };
static struct ctl_table ipv4_route_flush_table[] = { static struct ctl_table ipv4_route_flush_table[] = {
{ {
.ctl_name = NET_IPV4_ROUTE_FLUSH,
.procname = "flush", .procname = "flush",
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0200, .mode = 0200,
.proc_handler = ipv4_sysctl_rtcache_flush, .proc_handler = ipv4_sysctl_rtcache_flush,
.strategy = ipv4_sysctl_rtcache_flush_strategy,
}, },
{ .ctl_name = 0 }, { },
}; };
static __net_initdata struct ctl_path ipv4_route_path[] = { static __net_initdata struct ctl_path ipv4_route_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ipv4", .ctl_name = NET_IPV4, }, { .procname = "ipv4", },
{ .procname = "route", .ctl_name = NET_IPV4_ROUTE, }, { .procname = "route", },
{ }, { },
}; };

View file

@ -63,34 +63,6 @@ static int ipv4_local_port_range(ctl_table *table, int write,
return ret; return ret;
} }
/* Validate changes from sysctl interface. */
static int ipv4_sysctl_local_port_range(ctl_table *table,
void __user *oldval,
size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
int ret;
int range[2];
ctl_table tmp = {
.data = &range,
.maxlen = sizeof(range),
.mode = table->mode,
.extra1 = &ip_local_port_range_min,
.extra2 = &ip_local_port_range_max,
};
inet_get_local_port_range(range, range + 1);
ret = sysctl_intvec(&tmp, oldval, oldlenp, newval, newlen);
if (ret == 0 && newval && newlen) {
if (range[1] < range[0])
ret = -EINVAL;
else
set_local_port_range(range);
}
return ret;
}
static int proc_tcp_congestion_control(ctl_table *ctl, int write, static int proc_tcp_congestion_control(ctl_table *ctl, int write,
void __user *buffer, size_t *lenp, loff_t *ppos) void __user *buffer, size_t *lenp, loff_t *ppos)
{ {
@ -109,25 +81,6 @@ static int proc_tcp_congestion_control(ctl_table *ctl, int write,
return ret; return ret;
} }
static int sysctl_tcp_congestion_control(ctl_table *table,
void __user *oldval,
size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
char val[TCP_CA_NAME_MAX];
ctl_table tbl = {
.data = val,
.maxlen = TCP_CA_NAME_MAX,
};
int ret;
tcp_get_default_congestion_control(val);
ret = sysctl_string(&tbl, oldval, oldlenp, newval, newlen);
if (ret == 1 && newval && newlen)
ret = tcp_set_default_congestion_control(val);
return ret;
}
static int proc_tcp_available_congestion_control(ctl_table *ctl, static int proc_tcp_available_congestion_control(ctl_table *ctl,
int write, int write,
void __user *buffer, size_t *lenp, void __user *buffer, size_t *lenp,
@ -165,32 +118,8 @@ static int proc_allowed_congestion_control(ctl_table *ctl,
return ret; return ret;
} }
static int strategy_allowed_congestion_control(ctl_table *table,
void __user *oldval,
size_t __user *oldlenp,
void __user *newval,
size_t newlen)
{
ctl_table tbl = { .maxlen = TCP_CA_BUF_MAX };
int ret;
tbl.data = kmalloc(tbl.maxlen, GFP_USER);
if (!tbl.data)
return -ENOMEM;
tcp_get_available_congestion_control(tbl.data, tbl.maxlen);
ret = sysctl_string(&tbl, oldval, oldlenp, newval, newlen);
if (ret == 1 && newval && newlen)
ret = tcp_set_allowed_congestion_control(tbl.data);
kfree(tbl.data);
return ret;
}
static struct ctl_table ipv4_table[] = { static struct ctl_table ipv4_table[] = {
{ {
.ctl_name = NET_IPV4_TCP_TIMESTAMPS,
.procname = "tcp_timestamps", .procname = "tcp_timestamps",
.data = &sysctl_tcp_timestamps, .data = &sysctl_tcp_timestamps,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -198,7 +127,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_TCP_WINDOW_SCALING,
.procname = "tcp_window_scaling", .procname = "tcp_window_scaling",
.data = &sysctl_tcp_window_scaling, .data = &sysctl_tcp_window_scaling,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -206,7 +134,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_TCP_SACK,
.procname = "tcp_sack", .procname = "tcp_sack",
.data = &sysctl_tcp_sack, .data = &sysctl_tcp_sack,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -214,7 +141,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_TCP_RETRANS_COLLAPSE,
.procname = "tcp_retrans_collapse", .procname = "tcp_retrans_collapse",
.data = &sysctl_tcp_retrans_collapse, .data = &sysctl_tcp_retrans_collapse,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -222,17 +148,14 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_DEFAULT_TTL,
.procname = "ip_default_ttl", .procname = "ip_default_ttl",
.data = &sysctl_ip_default_ttl, .data = &sysctl_ip_default_ttl,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = ipv4_doint_and_flush, .proc_handler = ipv4_doint_and_flush,
.strategy = ipv4_doint_and_flush_strategy,
.extra2 = &init_net, .extra2 = &init_net,
}, },
{ {
.ctl_name = NET_IPV4_NO_PMTU_DISC,
.procname = "ip_no_pmtu_disc", .procname = "ip_no_pmtu_disc",
.data = &ipv4_config.no_pmtu_disc, .data = &ipv4_config.no_pmtu_disc,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -240,7 +163,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_NONLOCAL_BIND,
.procname = "ip_nonlocal_bind", .procname = "ip_nonlocal_bind",
.data = &sysctl_ip_nonlocal_bind, .data = &sysctl_ip_nonlocal_bind,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -248,7 +170,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_TCP_SYN_RETRIES,
.procname = "tcp_syn_retries", .procname = "tcp_syn_retries",
.data = &sysctl_tcp_syn_retries, .data = &sysctl_tcp_syn_retries,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -256,7 +177,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_SYNACK_RETRIES,
.procname = "tcp_synack_retries", .procname = "tcp_synack_retries",
.data = &sysctl_tcp_synack_retries, .data = &sysctl_tcp_synack_retries,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -264,7 +184,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_MAX_ORPHANS,
.procname = "tcp_max_orphans", .procname = "tcp_max_orphans",
.data = &sysctl_tcp_max_orphans, .data = &sysctl_tcp_max_orphans,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -272,7 +191,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_MAX_TW_BUCKETS,
.procname = "tcp_max_tw_buckets", .procname = "tcp_max_tw_buckets",
.data = &tcp_death_row.sysctl_max_tw_buckets, .data = &tcp_death_row.sysctl_max_tw_buckets,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -280,7 +198,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_DYNADDR,
.procname = "ip_dynaddr", .procname = "ip_dynaddr",
.data = &sysctl_ip_dynaddr, .data = &sysctl_ip_dynaddr,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -288,16 +205,13 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_TCP_KEEPALIVE_TIME,
.procname = "tcp_keepalive_time", .procname = "tcp_keepalive_time",
.data = &sysctl_tcp_keepalive_time, .data = &sysctl_tcp_keepalive_time,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
{ {
.ctl_name = NET_IPV4_TCP_KEEPALIVE_PROBES,
.procname = "tcp_keepalive_probes", .procname = "tcp_keepalive_probes",
.data = &sysctl_tcp_keepalive_probes, .data = &sysctl_tcp_keepalive_probes,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -305,26 +219,21 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_TCP_KEEPALIVE_INTVL,
.procname = "tcp_keepalive_intvl", .procname = "tcp_keepalive_intvl",
.data = &sysctl_tcp_keepalive_intvl, .data = &sysctl_tcp_keepalive_intvl,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
{ {
.ctl_name = NET_IPV4_TCP_RETRIES1,
.procname = "tcp_retries1", .procname = "tcp_retries1",
.data = &sysctl_tcp_retries1, .data = &sysctl_tcp_retries1,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra2 = &tcp_retr1_max .extra2 = &tcp_retr1_max
}, },
{ {
.ctl_name = NET_IPV4_TCP_RETRIES2,
.procname = "tcp_retries2", .procname = "tcp_retries2",
.data = &sysctl_tcp_retries2, .data = &sysctl_tcp_retries2,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -332,17 +241,14 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_TCP_FIN_TIMEOUT,
.procname = "tcp_fin_timeout", .procname = "tcp_fin_timeout",
.data = &sysctl_tcp_fin_timeout, .data = &sysctl_tcp_fin_timeout,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
#ifdef CONFIG_SYN_COOKIES #ifdef CONFIG_SYN_COOKIES
{ {
.ctl_name = NET_TCP_SYNCOOKIES,
.procname = "tcp_syncookies", .procname = "tcp_syncookies",
.data = &sysctl_tcp_syncookies, .data = &sysctl_tcp_syncookies,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -351,7 +257,6 @@ static struct ctl_table ipv4_table[] = {
}, },
#endif #endif
{ {
.ctl_name = NET_TCP_TW_RECYCLE,
.procname = "tcp_tw_recycle", .procname = "tcp_tw_recycle",
.data = &tcp_death_row.sysctl_tw_recycle, .data = &tcp_death_row.sysctl_tw_recycle,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -359,7 +264,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_ABORT_ON_OVERFLOW,
.procname = "tcp_abort_on_overflow", .procname = "tcp_abort_on_overflow",
.data = &sysctl_tcp_abort_on_overflow, .data = &sysctl_tcp_abort_on_overflow,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -367,7 +271,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_STDURG,
.procname = "tcp_stdurg", .procname = "tcp_stdurg",
.data = &sysctl_tcp_stdurg, .data = &sysctl_tcp_stdurg,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -375,7 +278,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_RFC1337,
.procname = "tcp_rfc1337", .procname = "tcp_rfc1337",
.data = &sysctl_tcp_rfc1337, .data = &sysctl_tcp_rfc1337,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -383,7 +285,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_MAX_SYN_BACKLOG,
.procname = "tcp_max_syn_backlog", .procname = "tcp_max_syn_backlog",
.data = &sysctl_max_syn_backlog, .data = &sysctl_max_syn_backlog,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -391,17 +292,14 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_LOCAL_PORT_RANGE,
.procname = "ip_local_port_range", .procname = "ip_local_port_range",
.data = &sysctl_local_ports.range, .data = &sysctl_local_ports.range,
.maxlen = sizeof(sysctl_local_ports.range), .maxlen = sizeof(sysctl_local_ports.range),
.mode = 0644, .mode = 0644,
.proc_handler = ipv4_local_port_range, .proc_handler = ipv4_local_port_range,
.strategy = ipv4_sysctl_local_port_range,
}, },
#ifdef CONFIG_IP_MULTICAST #ifdef CONFIG_IP_MULTICAST
{ {
.ctl_name = NET_IPV4_IGMP_MAX_MEMBERSHIPS,
.procname = "igmp_max_memberships", .procname = "igmp_max_memberships",
.data = &sysctl_igmp_max_memberships, .data = &sysctl_igmp_max_memberships,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -411,7 +309,6 @@ static struct ctl_table ipv4_table[] = {
#endif #endif
{ {
.ctl_name = NET_IPV4_IGMP_MAX_MSF,
.procname = "igmp_max_msf", .procname = "igmp_max_msf",
.data = &sysctl_igmp_max_msf, .data = &sysctl_igmp_max_msf,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -419,7 +316,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_INET_PEER_THRESHOLD,
.procname = "inet_peer_threshold", .procname = "inet_peer_threshold",
.data = &inet_peer_threshold, .data = &inet_peer_threshold,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -427,43 +323,34 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_INET_PEER_MINTTL,
.procname = "inet_peer_minttl", .procname = "inet_peer_minttl",
.data = &inet_peer_minttl, .data = &inet_peer_minttl,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
{ {
.ctl_name = NET_IPV4_INET_PEER_MAXTTL,
.procname = "inet_peer_maxttl", .procname = "inet_peer_maxttl",
.data = &inet_peer_maxttl, .data = &inet_peer_maxttl,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
{ {
.ctl_name = NET_IPV4_INET_PEER_GC_MINTIME,
.procname = "inet_peer_gc_mintime", .procname = "inet_peer_gc_mintime",
.data = &inet_peer_gc_mintime, .data = &inet_peer_gc_mintime,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
{ {
.ctl_name = NET_IPV4_INET_PEER_GC_MAXTIME,
.procname = "inet_peer_gc_maxtime", .procname = "inet_peer_gc_maxtime",
.data = &inet_peer_gc_maxtime, .data = &inet_peer_gc_maxtime,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
{ {
.ctl_name = NET_TCP_ORPHAN_RETRIES,
.procname = "tcp_orphan_retries", .procname = "tcp_orphan_retries",
.data = &sysctl_tcp_orphan_retries, .data = &sysctl_tcp_orphan_retries,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -471,7 +358,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_FACK,
.procname = "tcp_fack", .procname = "tcp_fack",
.data = &sysctl_tcp_fack, .data = &sysctl_tcp_fack,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -479,7 +365,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_REORDERING,
.procname = "tcp_reordering", .procname = "tcp_reordering",
.data = &sysctl_tcp_reordering, .data = &sysctl_tcp_reordering,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -487,7 +372,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_ECN,
.procname = "tcp_ecn", .procname = "tcp_ecn",
.data = &sysctl_tcp_ecn, .data = &sysctl_tcp_ecn,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -495,7 +379,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_DSACK,
.procname = "tcp_dsack", .procname = "tcp_dsack",
.data = &sysctl_tcp_dsack, .data = &sysctl_tcp_dsack,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -503,7 +386,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_MEM,
.procname = "tcp_mem", .procname = "tcp_mem",
.data = &sysctl_tcp_mem, .data = &sysctl_tcp_mem,
.maxlen = sizeof(sysctl_tcp_mem), .maxlen = sizeof(sysctl_tcp_mem),
@ -511,7 +393,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_WMEM,
.procname = "tcp_wmem", .procname = "tcp_wmem",
.data = &sysctl_tcp_wmem, .data = &sysctl_tcp_wmem,
.maxlen = sizeof(sysctl_tcp_wmem), .maxlen = sizeof(sysctl_tcp_wmem),
@ -519,7 +400,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_RMEM,
.procname = "tcp_rmem", .procname = "tcp_rmem",
.data = &sysctl_tcp_rmem, .data = &sysctl_tcp_rmem,
.maxlen = sizeof(sysctl_tcp_rmem), .maxlen = sizeof(sysctl_tcp_rmem),
@ -527,7 +407,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_APP_WIN,
.procname = "tcp_app_win", .procname = "tcp_app_win",
.data = &sysctl_tcp_app_win, .data = &sysctl_tcp_app_win,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -535,7 +414,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_ADV_WIN_SCALE,
.procname = "tcp_adv_win_scale", .procname = "tcp_adv_win_scale",
.data = &sysctl_tcp_adv_win_scale, .data = &sysctl_tcp_adv_win_scale,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -543,7 +421,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_TW_REUSE,
.procname = "tcp_tw_reuse", .procname = "tcp_tw_reuse",
.data = &sysctl_tcp_tw_reuse, .data = &sysctl_tcp_tw_reuse,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -551,7 +428,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_FRTO,
.procname = "tcp_frto", .procname = "tcp_frto",
.data = &sysctl_tcp_frto, .data = &sysctl_tcp_frto,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -559,7 +435,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_FRTO_RESPONSE,
.procname = "tcp_frto_response", .procname = "tcp_frto_response",
.data = &sysctl_tcp_frto_response, .data = &sysctl_tcp_frto_response,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -567,7 +442,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_LOW_LATENCY,
.procname = "tcp_low_latency", .procname = "tcp_low_latency",
.data = &sysctl_tcp_low_latency, .data = &sysctl_tcp_low_latency,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -575,7 +449,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_TCP_NO_METRICS_SAVE,
.procname = "tcp_no_metrics_save", .procname = "tcp_no_metrics_save",
.data = &sysctl_tcp_nometrics_save, .data = &sysctl_tcp_nometrics_save,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -583,7 +456,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_TCP_MODERATE_RCVBUF,
.procname = "tcp_moderate_rcvbuf", .procname = "tcp_moderate_rcvbuf",
.data = &sysctl_tcp_moderate_rcvbuf, .data = &sysctl_tcp_moderate_rcvbuf,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -591,7 +463,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_TCP_TSO_WIN_DIVISOR,
.procname = "tcp_tso_win_divisor", .procname = "tcp_tso_win_divisor",
.data = &sysctl_tcp_tso_win_divisor, .data = &sysctl_tcp_tso_win_divisor,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -599,15 +470,12 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_TCP_CONG_CONTROL,
.procname = "tcp_congestion_control", .procname = "tcp_congestion_control",
.mode = 0644, .mode = 0644,
.maxlen = TCP_CA_NAME_MAX, .maxlen = TCP_CA_NAME_MAX,
.proc_handler = proc_tcp_congestion_control, .proc_handler = proc_tcp_congestion_control,
.strategy = sysctl_tcp_congestion_control,
}, },
{ {
.ctl_name = NET_TCP_ABC,
.procname = "tcp_abc", .procname = "tcp_abc",
.data = &sysctl_tcp_abc, .data = &sysctl_tcp_abc,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -615,7 +483,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_TCP_MTU_PROBING,
.procname = "tcp_mtu_probing", .procname = "tcp_mtu_probing",
.data = &sysctl_tcp_mtu_probing, .data = &sysctl_tcp_mtu_probing,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -623,7 +490,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_TCP_BASE_MSS,
.procname = "tcp_base_mss", .procname = "tcp_base_mss",
.data = &sysctl_tcp_base_mss, .data = &sysctl_tcp_base_mss,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -631,7 +497,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS,
.procname = "tcp_workaround_signed_windows", .procname = "tcp_workaround_signed_windows",
.data = &sysctl_tcp_workaround_signed_windows, .data = &sysctl_tcp_workaround_signed_windows,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -640,7 +505,6 @@ static struct ctl_table ipv4_table[] = {
}, },
#ifdef CONFIG_NET_DMA #ifdef CONFIG_NET_DMA
{ {
.ctl_name = NET_TCP_DMA_COPYBREAK,
.procname = "tcp_dma_copybreak", .procname = "tcp_dma_copybreak",
.data = &sysctl_tcp_dma_copybreak, .data = &sysctl_tcp_dma_copybreak,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -649,7 +513,6 @@ static struct ctl_table ipv4_table[] = {
}, },
#endif #endif
{ {
.ctl_name = NET_TCP_SLOW_START_AFTER_IDLE,
.procname = "tcp_slow_start_after_idle", .procname = "tcp_slow_start_after_idle",
.data = &sysctl_tcp_slow_start_after_idle, .data = &sysctl_tcp_slow_start_after_idle,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -658,7 +521,6 @@ static struct ctl_table ipv4_table[] = {
}, },
#ifdef CONFIG_NETLABEL #ifdef CONFIG_NETLABEL
{ {
.ctl_name = NET_CIPSOV4_CACHE_ENABLE,
.procname = "cipso_cache_enable", .procname = "cipso_cache_enable",
.data = &cipso_v4_cache_enabled, .data = &cipso_v4_cache_enabled,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -666,7 +528,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_CIPSOV4_CACHE_BUCKET_SIZE,
.procname = "cipso_cache_bucket_size", .procname = "cipso_cache_bucket_size",
.data = &cipso_v4_cache_bucketsize, .data = &cipso_v4_cache_bucketsize,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -674,7 +535,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_CIPSOV4_RBM_OPTFMT,
.procname = "cipso_rbm_optfmt", .procname = "cipso_rbm_optfmt",
.data = &cipso_v4_rbm_optfmt, .data = &cipso_v4_rbm_optfmt,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -682,7 +542,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_CIPSOV4_RBM_STRICTVALID,
.procname = "cipso_rbm_strictvalid", .procname = "cipso_rbm_strictvalid",
.data = &cipso_v4_rbm_strictvalid, .data = &cipso_v4_rbm_strictvalid,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -697,15 +556,12 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_tcp_available_congestion_control, .proc_handler = proc_tcp_available_congestion_control,
}, },
{ {
.ctl_name = NET_TCP_ALLOWED_CONG_CONTROL,
.procname = "tcp_allowed_congestion_control", .procname = "tcp_allowed_congestion_control",
.maxlen = TCP_CA_BUF_MAX, .maxlen = TCP_CA_BUF_MAX,
.mode = 0644, .mode = 0644,
.proc_handler = proc_allowed_congestion_control, .proc_handler = proc_allowed_congestion_control,
.strategy = strategy_allowed_congestion_control,
}, },
{ {
.ctl_name = NET_TCP_MAX_SSTHRESH,
.procname = "tcp_max_ssthresh", .procname = "tcp_max_ssthresh",
.data = &sysctl_tcp_max_ssthresh, .data = &sysctl_tcp_max_ssthresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -713,41 +569,34 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "udp_mem", .procname = "udp_mem",
.data = &sysctl_udp_mem, .data = &sysctl_udp_mem,
.maxlen = sizeof(sysctl_udp_mem), .maxlen = sizeof(sysctl_udp_mem),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &zero .extra1 = &zero
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "udp_rmem_min", .procname = "udp_rmem_min",
.data = &sysctl_udp_rmem_min, .data = &sysctl_udp_rmem_min,
.maxlen = sizeof(sysctl_udp_rmem_min), .maxlen = sizeof(sysctl_udp_rmem_min),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &zero .extra1 = &zero
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "udp_wmem_min", .procname = "udp_wmem_min",
.data = &sysctl_udp_wmem_min, .data = &sysctl_udp_wmem_min,
.maxlen = sizeof(sysctl_udp_wmem_min), .maxlen = sizeof(sysctl_udp_wmem_min),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.strategy = sysctl_intvec,
.extra1 = &zero .extra1 = &zero
}, },
{ .ctl_name = 0 } { }
}; };
static struct ctl_table ipv4_net_table[] = { static struct ctl_table ipv4_net_table[] = {
{ {
.ctl_name = NET_IPV4_ICMP_ECHO_IGNORE_ALL,
.procname = "icmp_echo_ignore_all", .procname = "icmp_echo_ignore_all",
.data = &init_net.ipv4.sysctl_icmp_echo_ignore_all, .data = &init_net.ipv4.sysctl_icmp_echo_ignore_all,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -755,7 +604,6 @@ static struct ctl_table ipv4_net_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS,
.procname = "icmp_echo_ignore_broadcasts", .procname = "icmp_echo_ignore_broadcasts",
.data = &init_net.ipv4.sysctl_icmp_echo_ignore_broadcasts, .data = &init_net.ipv4.sysctl_icmp_echo_ignore_broadcasts,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -763,7 +611,6 @@ static struct ctl_table ipv4_net_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES,
.procname = "icmp_ignore_bogus_error_responses", .procname = "icmp_ignore_bogus_error_responses",
.data = &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses, .data = &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -771,7 +618,6 @@ static struct ctl_table ipv4_net_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR,
.procname = "icmp_errors_use_inbound_ifaddr", .procname = "icmp_errors_use_inbound_ifaddr",
.data = &init_net.ipv4.sysctl_icmp_errors_use_inbound_ifaddr, .data = &init_net.ipv4.sysctl_icmp_errors_use_inbound_ifaddr,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -779,16 +625,13 @@ static struct ctl_table ipv4_net_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV4_ICMP_RATELIMIT,
.procname = "icmp_ratelimit", .procname = "icmp_ratelimit",
.data = &init_net.ipv4.sysctl_icmp_ratelimit, .data = &init_net.ipv4.sysctl_icmp_ratelimit,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_ms_jiffies, .proc_handler = proc_dointvec_ms_jiffies,
.strategy = sysctl_ms_jiffies
}, },
{ {
.ctl_name = NET_IPV4_ICMP_RATEMASK,
.procname = "icmp_ratemask", .procname = "icmp_ratemask",
.data = &init_net.ipv4.sysctl_icmp_ratemask, .data = &init_net.ipv4.sysctl_icmp_ratemask,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -796,7 +639,6 @@ static struct ctl_table ipv4_net_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "rt_cache_rebuild_count", .procname = "rt_cache_rebuild_count",
.data = &init_net.ipv4.sysctl_rt_cache_rebuild_count, .data = &init_net.ipv4.sysctl_rt_cache_rebuild_count,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -807,8 +649,8 @@ static struct ctl_table ipv4_net_table[] = {
}; };
struct ctl_path net_ipv4_ctl_path[] = { struct ctl_path net_ipv4_ctl_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ipv4", .ctl_name = NET_IPV4, }, { .procname = "ipv4", },
{ }, { },
}; };
EXPORT_SYMBOL_GPL(net_ipv4_ctl_path); EXPORT_SYMBOL_GPL(net_ipv4_ctl_path);

View file

@ -267,7 +267,6 @@ static struct xfrm_policy_afinfo xfrm4_policy_afinfo = {
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
static struct ctl_table xfrm4_policy_table[] = { static struct ctl_table xfrm4_policy_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "xfrm4_gc_thresh", .procname = "xfrm4_gc_thresh",
.data = &xfrm4_dst_ops.gc_thresh, .data = &xfrm4_dst_ops.gc_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),

View file

@ -4000,41 +4000,6 @@ int addrconf_sysctl_forward(ctl_table *ctl, int write,
return ret; return ret;
} }
static int addrconf_sysctl_forward_strategy(ctl_table *table,
void __user *oldval,
size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
int *valp = table->data;
int val = *valp;
int new;
if (!newval || !newlen)
return 0;
if (newlen != sizeof(int))
return -EINVAL;
if (get_user(new, (int __user *)newval))
return -EFAULT;
if (new == *valp)
return 0;
if (oldval && oldlenp) {
size_t len;
if (get_user(len, oldlenp))
return -EFAULT;
if (len) {
if (len > table->maxlen)
len = table->maxlen;
if (copy_to_user(oldval, valp, len))
return -EFAULT;
if (put_user(len, oldlenp))
return -EFAULT;
}
}
*valp = new;
return addrconf_fixup_forwarding(table, valp, val);
}
static void dev_disable_change(struct inet6_dev *idev) static void dev_disable_change(struct inet6_dev *idev)
{ {
if (!idev || !idev->dev) if (!idev || !idev->dev)
@ -4113,16 +4078,13 @@ static struct addrconf_sysctl_table
.sysctl_header = NULL, .sysctl_header = NULL,
.addrconf_vars = { .addrconf_vars = {
{ {
.ctl_name = NET_IPV6_FORWARDING,
.procname = "forwarding", .procname = "forwarding",
.data = &ipv6_devconf.forwarding, .data = &ipv6_devconf.forwarding,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = addrconf_sysctl_forward, .proc_handler = addrconf_sysctl_forward,
.strategy = addrconf_sysctl_forward_strategy,
}, },
{ {
.ctl_name = NET_IPV6_HOP_LIMIT,
.procname = "hop_limit", .procname = "hop_limit",
.data = &ipv6_devconf.hop_limit, .data = &ipv6_devconf.hop_limit,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4130,7 +4092,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_MTU,
.procname = "mtu", .procname = "mtu",
.data = &ipv6_devconf.mtu6, .data = &ipv6_devconf.mtu6,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4138,7 +4099,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_ACCEPT_RA,
.procname = "accept_ra", .procname = "accept_ra",
.data = &ipv6_devconf.accept_ra, .data = &ipv6_devconf.accept_ra,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4146,7 +4106,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_ACCEPT_REDIRECTS,
.procname = "accept_redirects", .procname = "accept_redirects",
.data = &ipv6_devconf.accept_redirects, .data = &ipv6_devconf.accept_redirects,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4154,7 +4113,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_AUTOCONF,
.procname = "autoconf", .procname = "autoconf",
.data = &ipv6_devconf.autoconf, .data = &ipv6_devconf.autoconf,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4162,7 +4120,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_DAD_TRANSMITS,
.procname = "dad_transmits", .procname = "dad_transmits",
.data = &ipv6_devconf.dad_transmits, .data = &ipv6_devconf.dad_transmits,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4170,7 +4127,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_RTR_SOLICITS,
.procname = "router_solicitations", .procname = "router_solicitations",
.data = &ipv6_devconf.rtr_solicits, .data = &ipv6_devconf.rtr_solicits,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4178,25 +4134,20 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_RTR_SOLICIT_INTERVAL,
.procname = "router_solicitation_interval", .procname = "router_solicitation_interval",
.data = &ipv6_devconf.rtr_solicit_interval, .data = &ipv6_devconf.rtr_solicit_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV6_RTR_SOLICIT_DELAY,
.procname = "router_solicitation_delay", .procname = "router_solicitation_delay",
.data = &ipv6_devconf.rtr_solicit_delay, .data = &ipv6_devconf.rtr_solicit_delay,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV6_FORCE_MLD_VERSION,
.procname = "force_mld_version", .procname = "force_mld_version",
.data = &ipv6_devconf.force_mld_version, .data = &ipv6_devconf.force_mld_version,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4205,7 +4156,6 @@ static struct addrconf_sysctl_table
}, },
#ifdef CONFIG_IPV6_PRIVACY #ifdef CONFIG_IPV6_PRIVACY
{ {
.ctl_name = NET_IPV6_USE_TEMPADDR,
.procname = "use_tempaddr", .procname = "use_tempaddr",
.data = &ipv6_devconf.use_tempaddr, .data = &ipv6_devconf.use_tempaddr,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4213,7 +4163,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_TEMP_VALID_LFT,
.procname = "temp_valid_lft", .procname = "temp_valid_lft",
.data = &ipv6_devconf.temp_valid_lft, .data = &ipv6_devconf.temp_valid_lft,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4221,7 +4170,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_TEMP_PREFERED_LFT,
.procname = "temp_prefered_lft", .procname = "temp_prefered_lft",
.data = &ipv6_devconf.temp_prefered_lft, .data = &ipv6_devconf.temp_prefered_lft,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4229,7 +4177,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_REGEN_MAX_RETRY,
.procname = "regen_max_retry", .procname = "regen_max_retry",
.data = &ipv6_devconf.regen_max_retry, .data = &ipv6_devconf.regen_max_retry,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4237,7 +4184,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_MAX_DESYNC_FACTOR,
.procname = "max_desync_factor", .procname = "max_desync_factor",
.data = &ipv6_devconf.max_desync_factor, .data = &ipv6_devconf.max_desync_factor,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4246,7 +4192,6 @@ static struct addrconf_sysctl_table
}, },
#endif #endif
{ {
.ctl_name = NET_IPV6_MAX_ADDRESSES,
.procname = "max_addresses", .procname = "max_addresses",
.data = &ipv6_devconf.max_addresses, .data = &ipv6_devconf.max_addresses,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4254,7 +4199,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_ACCEPT_RA_DEFRTR,
.procname = "accept_ra_defrtr", .procname = "accept_ra_defrtr",
.data = &ipv6_devconf.accept_ra_defrtr, .data = &ipv6_devconf.accept_ra_defrtr,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4262,7 +4206,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_ACCEPT_RA_PINFO,
.procname = "accept_ra_pinfo", .procname = "accept_ra_pinfo",
.data = &ipv6_devconf.accept_ra_pinfo, .data = &ipv6_devconf.accept_ra_pinfo,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4271,7 +4214,6 @@ static struct addrconf_sysctl_table
}, },
#ifdef CONFIG_IPV6_ROUTER_PREF #ifdef CONFIG_IPV6_ROUTER_PREF
{ {
.ctl_name = NET_IPV6_ACCEPT_RA_RTR_PREF,
.procname = "accept_ra_rtr_pref", .procname = "accept_ra_rtr_pref",
.data = &ipv6_devconf.accept_ra_rtr_pref, .data = &ipv6_devconf.accept_ra_rtr_pref,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4279,17 +4221,14 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_RTR_PROBE_INTERVAL,
.procname = "router_probe_interval", .procname = "router_probe_interval",
.data = &ipv6_devconf.rtr_probe_interval, .data = &ipv6_devconf.rtr_probe_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
#ifdef CONFIG_IPV6_ROUTE_INFO #ifdef CONFIG_IPV6_ROUTE_INFO
{ {
.ctl_name = NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN,
.procname = "accept_ra_rt_info_max_plen", .procname = "accept_ra_rt_info_max_plen",
.data = &ipv6_devconf.accept_ra_rt_info_max_plen, .data = &ipv6_devconf.accept_ra_rt_info_max_plen,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4299,7 +4238,6 @@ static struct addrconf_sysctl_table
#endif #endif
#endif #endif
{ {
.ctl_name = NET_IPV6_PROXY_NDP,
.procname = "proxy_ndp", .procname = "proxy_ndp",
.data = &ipv6_devconf.proxy_ndp, .data = &ipv6_devconf.proxy_ndp,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4307,7 +4245,6 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_ACCEPT_SOURCE_ROUTE,
.procname = "accept_source_route", .procname = "accept_source_route",
.data = &ipv6_devconf.accept_source_route, .data = &ipv6_devconf.accept_source_route,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4316,7 +4253,6 @@ static struct addrconf_sysctl_table
}, },
#ifdef CONFIG_IPV6_OPTIMISTIC_DAD #ifdef CONFIG_IPV6_OPTIMISTIC_DAD
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "optimistic_dad", .procname = "optimistic_dad",
.data = &ipv6_devconf.optimistic_dad, .data = &ipv6_devconf.optimistic_dad,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4327,7 +4263,6 @@ static struct addrconf_sysctl_table
#endif #endif
#ifdef CONFIG_IPV6_MROUTE #ifdef CONFIG_IPV6_MROUTE
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "mc_forwarding", .procname = "mc_forwarding",
.data = &ipv6_devconf.mc_forwarding, .data = &ipv6_devconf.mc_forwarding,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4336,16 +4271,13 @@ static struct addrconf_sysctl_table
}, },
#endif #endif
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "disable_ipv6", .procname = "disable_ipv6",
.data = &ipv6_devconf.disable_ipv6, .data = &ipv6_devconf.disable_ipv6,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = addrconf_sysctl_disable, .proc_handler = addrconf_sysctl_disable,
.strategy = sysctl_intvec,
}, },
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "accept_dad", .procname = "accept_dad",
.data = &ipv6_devconf.accept_dad, .data = &ipv6_devconf.accept_dad,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -4353,13 +4285,13 @@ static struct addrconf_sysctl_table
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = 0, /* sentinel */ /* sentinel */
} }
}, },
}; };
static int __addrconf_sysctl_register(struct net *net, char *dev_name, static int __addrconf_sysctl_register(struct net *net, char *dev_name,
int ctl_name, struct inet6_dev *idev, struct ipv6_devconf *p) struct inet6_dev *idev, struct ipv6_devconf *p)
{ {
int i; int i;
struct addrconf_sysctl_table *t; struct addrconf_sysctl_table *t;
@ -4367,9 +4299,9 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name,
#define ADDRCONF_CTL_PATH_DEV 3 #define ADDRCONF_CTL_PATH_DEV 3
struct ctl_path addrconf_ctl_path[] = { struct ctl_path addrconf_ctl_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ipv6", .ctl_name = NET_IPV6, }, { .procname = "ipv6", },
{ .procname = "conf", .ctl_name = NET_IPV6_CONF, }, { .procname = "conf", },
{ /* to be set */ }, { /* to be set */ },
{ }, { },
}; };
@ -4395,7 +4327,6 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name,
goto free; goto free;
addrconf_ctl_path[ADDRCONF_CTL_PATH_DEV].procname = t->dev_name; addrconf_ctl_path[ADDRCONF_CTL_PATH_DEV].procname = t->dev_name;
addrconf_ctl_path[ADDRCONF_CTL_PATH_DEV].ctl_name = ctl_name;
t->sysctl_header = register_net_sysctl_table(net, addrconf_ctl_path, t->sysctl_header = register_net_sysctl_table(net, addrconf_ctl_path,
t->addrconf_vars); t->addrconf_vars);
@ -4431,10 +4362,9 @@ static void addrconf_sysctl_register(struct inet6_dev *idev)
{ {
neigh_sysctl_register(idev->dev, idev->nd_parms, NET_IPV6, neigh_sysctl_register(idev->dev, idev->nd_parms, NET_IPV6,
NET_IPV6_NEIGH, "ipv6", NET_IPV6_NEIGH, "ipv6",
&ndisc_ifinfo_sysctl_change, &ndisc_ifinfo_sysctl_change);
ndisc_ifinfo_sysctl_strategy);
__addrconf_sysctl_register(dev_net(idev->dev), idev->dev->name, __addrconf_sysctl_register(dev_net(idev->dev), idev->dev->name,
idev->dev->ifindex, idev, &idev->cnf); idev, &idev->cnf);
} }
static void addrconf_sysctl_unregister(struct inet6_dev *idev) static void addrconf_sysctl_unregister(struct inet6_dev *idev)
@ -4473,13 +4403,11 @@ static int addrconf_init_net(struct net *net)
net->ipv6.devconf_dflt = dflt; net->ipv6.devconf_dflt = dflt;
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
err = __addrconf_sysctl_register(net, "all", NET_PROTO_CONF_ALL, err = __addrconf_sysctl_register(net, "all", NULL, all);
NULL, all);
if (err < 0) if (err < 0)
goto err_reg_all; goto err_reg_all;
err = __addrconf_sysctl_register(net, "default", NET_PROTO_CONF_DEFAULT, err = __addrconf_sysctl_register(net, "default", NULL, dflt);
NULL, dflt);
if (err < 0) if (err < 0)
goto err_reg_dflt; goto err_reg_dflt;
#endif #endif

View file

@ -942,15 +942,13 @@ EXPORT_SYMBOL(icmpv6_err_convert);
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
ctl_table ipv6_icmp_table_template[] = { ctl_table ipv6_icmp_table_template[] = {
{ {
.ctl_name = NET_IPV6_ICMP_RATELIMIT,
.procname = "ratelimit", .procname = "ratelimit",
.data = &init_net.ipv6.sysctl.icmpv6_time, .data = &init_net.ipv6.sysctl.icmpv6_time,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_ms_jiffies, .proc_handler = proc_dointvec_ms_jiffies,
.strategy = sysctl_ms_jiffies
}, },
{ .ctl_name = 0 }, { },
}; };
struct ctl_table *ipv6_icmp_sysctl_init(struct net *net) struct ctl_table *ipv6_icmp_sysctl_init(struct net *net)

View file

@ -1768,42 +1768,6 @@ int ndisc_ifinfo_sysctl_change(struct ctl_table *ctl, int write, void __user *bu
return ret; return ret;
} }
int ndisc_ifinfo_sysctl_strategy(ctl_table *ctl,
void __user *oldval, size_t __user *oldlenp,
void __user *newval, size_t newlen)
{
struct net_device *dev = ctl->extra1;
struct inet6_dev *idev;
int ret;
if (ctl->ctl_name == NET_NEIGH_RETRANS_TIME ||
ctl->ctl_name == NET_NEIGH_REACHABLE_TIME)
ndisc_warn_deprecated_sysctl(ctl, "procfs", dev ? dev->name : "default");
switch (ctl->ctl_name) {
case NET_NEIGH_REACHABLE_TIME:
ret = sysctl_jiffies(ctl, oldval, oldlenp, newval, newlen);
break;
case NET_NEIGH_RETRANS_TIME_MS:
case NET_NEIGH_REACHABLE_TIME_MS:
ret = sysctl_ms_jiffies(ctl, oldval, oldlenp, newval, newlen);
break;
default:
ret = 0;
}
if (newval && newlen && ret > 0 &&
dev && (idev = in6_dev_get(dev)) != NULL) {
if (ctl->ctl_name == NET_NEIGH_REACHABLE_TIME ||
ctl->ctl_name == NET_NEIGH_REACHABLE_TIME_MS)
idev->nd_parms->reachable_time = neigh_rand_reach_time(idev->nd_parms->base_reachable_time);
idev->tstamp = jiffies;
inet6_ifinfo_notify(RTM_NEWLINK, idev);
in6_dev_put(idev);
}
return ret;
}
#endif #endif
@ -1857,8 +1821,7 @@ int __init ndisc_init(void)
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
err = neigh_sysctl_register(NULL, &nd_tbl.parms, NET_IPV6, err = neigh_sysctl_register(NULL, &nd_tbl.parms, NET_IPV6,
NET_IPV6_NEIGH, "ipv6", NET_IPV6_NEIGH, "ipv6",
&ndisc_ifinfo_sysctl_change, &ndisc_ifinfo_sysctl_change);
&ndisc_ifinfo_sysctl_strategy);
if (err) if (err)
goto out_unregister_pernet; goto out_unregister_pernet;
#endif #endif

View file

@ -36,7 +36,6 @@
#define IPQ_QMAX_DEFAULT 1024 #define IPQ_QMAX_DEFAULT 1024
#define IPQ_PROC_FS_NAME "ip6_queue" #define IPQ_PROC_FS_NAME "ip6_queue"
#define NET_IPQ_QMAX 2088
#define NET_IPQ_QMAX_NAME "ip6_queue_maxlen" #define NET_IPQ_QMAX_NAME "ip6_queue_maxlen"
typedef int (*ipq_cmpfn)(struct nf_queue_entry *, unsigned long); typedef int (*ipq_cmpfn)(struct nf_queue_entry *, unsigned long);
@ -518,14 +517,13 @@ static struct ctl_table_header *ipq_sysctl_header;
static ctl_table ipq_table[] = { static ctl_table ipq_table[] = {
{ {
.ctl_name = NET_IPQ_QMAX,
.procname = NET_IPQ_QMAX_NAME, .procname = NET_IPQ_QMAX_NAME,
.data = &queue_maxlen, .data = &queue_maxlen,
.maxlen = sizeof(queue_maxlen), .maxlen = sizeof(queue_maxlen),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ .ctl_name = 0 } { }
}; };
#endif #endif

View file

@ -277,9 +277,7 @@ static struct ctl_table icmpv6_sysctl_table[] = {
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
}, },
{ { }
.ctl_name = 0
}
}; };
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */

View file

@ -83,7 +83,6 @@ struct ctl_table nf_ct_ipv6_sysctl_table[] = {
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
}, },
{ {
.ctl_name = NET_NF_CONNTRACK_FRAG6_LOW_THRESH,
.procname = "nf_conntrack_frag6_low_thresh", .procname = "nf_conntrack_frag6_low_thresh",
.data = &nf_init_frags.low_thresh, .data = &nf_init_frags.low_thresh,
.maxlen = sizeof(unsigned int), .maxlen = sizeof(unsigned int),
@ -91,14 +90,13 @@ struct ctl_table nf_ct_ipv6_sysctl_table[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_NF_CONNTRACK_FRAG6_HIGH_THRESH,
.procname = "nf_conntrack_frag6_high_thresh", .procname = "nf_conntrack_frag6_high_thresh",
.data = &nf_init_frags.high_thresh, .data = &nf_init_frags.high_thresh,
.maxlen = sizeof(unsigned int), .maxlen = sizeof(unsigned int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ .ctl_name = 0 } { }
}; };
#endif #endif

View file

@ -636,7 +636,6 @@ static const struct inet6_protocol frag_protocol =
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
static struct ctl_table ip6_frags_ns_ctl_table[] = { static struct ctl_table ip6_frags_ns_ctl_table[] = {
{ {
.ctl_name = NET_IPV6_IP6FRAG_HIGH_THRESH,
.procname = "ip6frag_high_thresh", .procname = "ip6frag_high_thresh",
.data = &init_net.ipv6.frags.high_thresh, .data = &init_net.ipv6.frags.high_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -644,7 +643,6 @@ static struct ctl_table ip6_frags_ns_ctl_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV6_IP6FRAG_LOW_THRESH,
.procname = "ip6frag_low_thresh", .procname = "ip6frag_low_thresh",
.data = &init_net.ipv6.frags.low_thresh, .data = &init_net.ipv6.frags.low_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -652,26 +650,22 @@ static struct ctl_table ip6_frags_ns_ctl_table[] = {
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ {
.ctl_name = NET_IPV6_IP6FRAG_TIME,
.procname = "ip6frag_time", .procname = "ip6frag_time",
.data = &init_net.ipv6.frags.timeout, .data = &init_net.ipv6.frags.timeout,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ } { }
}; };
static struct ctl_table ip6_frags_ctl_table[] = { static struct ctl_table ip6_frags_ctl_table[] = {
{ {
.ctl_name = NET_IPV6_IP6FRAG_SECRET_INTERVAL,
.procname = "ip6frag_secret_interval", .procname = "ip6frag_secret_interval",
.data = &ip6_frags.secret_interval, .data = &ip6_frags.secret_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies
}, },
{ } { }
}; };

View file

@ -2546,7 +2546,6 @@ ctl_table ipv6_route_table_template[] = {
.proc_handler = ipv6_sysctl_rtcache_flush .proc_handler = ipv6_sysctl_rtcache_flush
}, },
{ {
.ctl_name = NET_IPV6_ROUTE_GC_THRESH,
.procname = "gc_thresh", .procname = "gc_thresh",
.data = &ip6_dst_ops_template.gc_thresh, .data = &ip6_dst_ops_template.gc_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -2554,7 +2553,6 @@ ctl_table ipv6_route_table_template[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_ROUTE_MAX_SIZE,
.procname = "max_size", .procname = "max_size",
.data = &init_net.ipv6.sysctl.ip6_rt_max_size, .data = &init_net.ipv6.sysctl.ip6_rt_max_size,
.maxlen = sizeof(int), .maxlen = sizeof(int),
@ -2562,69 +2560,55 @@ ctl_table ipv6_route_table_template[] = {
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ {
.ctl_name = NET_IPV6_ROUTE_GC_MIN_INTERVAL,
.procname = "gc_min_interval", .procname = "gc_min_interval",
.data = &init_net.ipv6.sysctl.ip6_rt_gc_min_interval, .data = &init_net.ipv6.sysctl.ip6_rt_gc_min_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV6_ROUTE_GC_TIMEOUT,
.procname = "gc_timeout", .procname = "gc_timeout",
.data = &init_net.ipv6.sysctl.ip6_rt_gc_timeout, .data = &init_net.ipv6.sysctl.ip6_rt_gc_timeout,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV6_ROUTE_GC_INTERVAL,
.procname = "gc_interval", .procname = "gc_interval",
.data = &init_net.ipv6.sysctl.ip6_rt_gc_interval, .data = &init_net.ipv6.sysctl.ip6_rt_gc_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV6_ROUTE_GC_ELASTICITY,
.procname = "gc_elasticity", .procname = "gc_elasticity",
.data = &init_net.ipv6.sysctl.ip6_rt_gc_elasticity, .data = &init_net.ipv6.sysctl.ip6_rt_gc_elasticity,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV6_ROUTE_MTU_EXPIRES,
.procname = "mtu_expires", .procname = "mtu_expires",
.data = &init_net.ipv6.sysctl.ip6_rt_mtu_expires, .data = &init_net.ipv6.sysctl.ip6_rt_mtu_expires,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV6_ROUTE_MIN_ADVMSS,
.procname = "min_adv_mss", .procname = "min_adv_mss",
.data = &init_net.ipv6.sysctl.ip6_rt_min_advmss, .data = &init_net.ipv6.sysctl.ip6_rt_min_advmss,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_jiffies, .proc_handler = proc_dointvec_jiffies,
.strategy = sysctl_jiffies,
}, },
{ {
.ctl_name = NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS,
.procname = "gc_min_interval_ms", .procname = "gc_min_interval_ms",
.data = &init_net.ipv6.sysctl.ip6_rt_gc_min_interval, .data = &init_net.ipv6.sysctl.ip6_rt_gc_min_interval,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_ms_jiffies, .proc_handler = proc_dointvec_ms_jiffies,
.strategy = sysctl_ms_jiffies,
}, },
{ .ctl_name = 0 } { }
}; };
struct ctl_table *ipv6_route_sysctl_init(struct net *net) struct ctl_table *ipv6_route_sysctl_init(struct net *net)

View file

@ -16,45 +16,41 @@
static ctl_table ipv6_table_template[] = { static ctl_table ipv6_table_template[] = {
{ {
.ctl_name = NET_IPV6_ROUTE,
.procname = "route", .procname = "route",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = ipv6_route_table_template .child = ipv6_route_table_template
}, },
{ {
.ctl_name = NET_IPV6_ICMP,
.procname = "icmp", .procname = "icmp",
.maxlen = 0, .maxlen = 0,
.mode = 0555, .mode = 0555,
.child = ipv6_icmp_table_template .child = ipv6_icmp_table_template
}, },
{ {
.ctl_name = NET_IPV6_BINDV6ONLY,
.procname = "bindv6only", .procname = "bindv6only",
.data = &init_net.ipv6.sysctl.bindv6only, .data = &init_net.ipv6.sysctl.bindv6only,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ .ctl_name = 0 } { }
}; };
static ctl_table ipv6_rotable[] = { static ctl_table ipv6_rotable[] = {
{ {
.ctl_name = NET_IPV6_MLD_MAX_MSF,
.procname = "mld_max_msf", .procname = "mld_max_msf",
.data = &sysctl_mld_max_msf, .data = &sysctl_mld_max_msf,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec .proc_handler = proc_dointvec
}, },
{ .ctl_name = 0 } { }
}; };
struct ctl_path net_ipv6_ctl_path[] = { struct ctl_path net_ipv6_ctl_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ipv6", .ctl_name = NET_IPV6, }, { .procname = "ipv6", },
{ }, { },
}; };
EXPORT_SYMBOL_GPL(net_ipv6_ctl_path); EXPORT_SYMBOL_GPL(net_ipv6_ctl_path);

View file

@ -309,7 +309,6 @@ static void xfrm6_policy_fini(void)
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
static struct ctl_table xfrm6_policy_table[] = { static struct ctl_table xfrm6_policy_table[] = {
{ {
.ctl_name = CTL_UNNUMBERED,
.procname = "xfrm6_gc_thresh", .procname = "xfrm6_gc_thresh",
.data = &xfrm6_dst_ops.gc_thresh, .data = &xfrm6_dst_ops.gc_thresh,
.maxlen = sizeof(int), .maxlen = sizeof(int),

View file

@ -18,19 +18,18 @@ extern int sysctl_ipx_pprop_broadcasting;
static struct ctl_table ipx_table[] = { static struct ctl_table ipx_table[] = {
{ {
.ctl_name = NET_IPX_PPROP_BROADCASTING,
.procname = "ipx_pprop_broadcasting", .procname = "ipx_pprop_broadcasting",
.data = &sysctl_ipx_pprop_broadcasting, .data = &sysctl_ipx_pprop_broadcasting,
.maxlen = sizeof(int), .maxlen = sizeof(int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec, .proc_handler = proc_dointvec,
}, },
{ 0 }, { },
}; };
static struct ctl_path ipx_path[] = { static struct ctl_path ipx_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, }, { .procname = "net", },
{ .procname = "ipx", .ctl_name = NET_IPX, }, { .procname = "ipx", },
{ } { }
}; };

Some files were not shown because too many files have changed in this diff Show more