Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 8 Dec 2009 15:38:50 +0000 (07:38 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 8 Dec 2009 15:38:50 +0000 (07:38 -0800)
* 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
  ...

135 files changed:
Documentation/sysctl/ctl_unnumbered.txt [deleted file]
arch/arm/kernel/isa.c
arch/arm/mach-bcmring/arch.c
arch/frv/kernel/pm.c
arch/frv/kernel/sysctl.c
arch/ia64/ia32/ia32_entry.S
arch/ia64/ia32/sys_ia32.c
arch/ia64/kernel/crash.c
arch/ia64/kernel/perfmon.c
arch/mips/kernel/linux32.c
arch/mips/kernel/scall64-n32.S
arch/mips/kernel/scall64-o32.S
arch/mips/lasat/sysctl.c
arch/parisc/kernel/sys_parisc32.c
arch/parisc/kernel/syscall_table.S
arch/powerpc/kernel/idle.c
arch/powerpc/kernel/sys_ppc32.c
arch/s390/appldata/appldata_base.c
arch/s390/kernel/compat_linux.c
arch/s390/kernel/compat_linux.h
arch/s390/kernel/compat_wrapper.S
arch/s390/kernel/debug.c
arch/s390/mm/cmm.c
arch/sh/kernel/traps_64.c
arch/sparc/kernel/sys_sparc32.c
arch/sparc/kernel/systbls_64.S
arch/x86/ia32/ia32entry.S
arch/x86/ia32/sys_ia32.c
arch/x86/include/asm/sys_ia32.h
arch/x86/kernel/vsyscall_64.c
arch/x86/vdso/vdso32-setup.c
crypto/proc.c
drivers/cdrom/cdrom.c
drivers/char/hpet.c
drivers/char/ipmi/ipmi_poweroff.c
drivers/char/pty.c
drivers/char/random.c
drivers/char/rtc.c
drivers/macintosh/mac_hid.c
drivers/md/md.c
drivers/misc/sgi-xp/xpc_main.c
drivers/net/wireless/arlan-proc.c
drivers/parport/procfs.c
drivers/s390/char/sclp_async.c
drivers/scsi/scsi_sysctl.c
fs/coda/sysctl.c
fs/eventpoll.c
fs/lockd/svc.c
fs/nfs/sysctl.c
fs/notify/inotify/inotify_user.c
fs/ntfs/sysctl.c
fs/ocfs2/stackglue.c
fs/proc/proc_sysctl.c
fs/quota/dquot.c
fs/xfs/linux-2.6/xfs_sysctl.c
include/linux/sysctl.h
include/net/dn_dev.h
include/net/neighbour.h
init/Kconfig
ipc/ipc_sysctl.c
ipc/mq_sysctl.c
kernel/Makefile
kernel/sched.c
kernel/slow-work.c
kernel/sys_ni.c
kernel/sysctl.c
kernel/sysctl_binary.c [new file with mode: 0644]
kernel/sysctl_check.c
kernel/utsname_sysctl.c
lib/Kconfig.debug
net/802/tr.c
net/appletalk/sysctl_net_atalk.c
net/ax25/sysctl_net_ax25.c
net/bridge/br_netfilter.c
net/core/neighbour.c
net/core/sysctl_net_core.c
net/dccp/sysctl.c
net/decnet/dn_dev.c
net/decnet/sysctl_net_decnet.c
net/ipv4/arp.c
net/ipv4/devinet.c
net/ipv4/ip_fragment.c
net/ipv4/netfilter.c
net/ipv4/netfilter/ip_queue.c
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
net/ipv4/netfilter/nf_conntrack_proto_icmp.c
net/ipv4/route.c
net/ipv4/sysctl_net_ipv4.c
net/ipv4/xfrm4_policy.c
net/ipv6/addrconf.c
net/ipv6/icmp.c
net/ipv6/ndisc.c
net/ipv6/netfilter/ip6_queue.c
net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
net/ipv6/netfilter/nf_conntrack_reasm.c
net/ipv6/reassembly.c
net/ipv6/route.c
net/ipv6/sysctl_net_ipv6.c
net/ipv6/xfrm6_policy.c
net/ipx/sysctl_net_ipx.c
net/irda/irsysctl.c
net/llc/sysctl_net_llc.c
net/netfilter/core.c
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/ipvs/ip_vs_lblc.c
net/netfilter/ipvs/ip_vs_lblcr.c
net/netfilter/nf_conntrack_acct.c
net/netfilter/nf_conntrack_ecache.c
net/netfilter/nf_conntrack_proto_dccp.c
net/netfilter/nf_conntrack_proto_generic.c
net/netfilter/nf_conntrack_proto_sctp.c
net/netfilter/nf_conntrack_proto_tcp.c
net/netfilter/nf_conntrack_proto_udp.c
net/netfilter/nf_conntrack_proto_udplite.c
net/netfilter/nf_conntrack_standalone.c
net/netfilter/nf_log.c
net/netrom/sysctl_net_netrom.c
net/phonet/sysctl.c
net/rds/ib_sysctl.c
net/rds/iw_sysctl.c
net/rds/sysctl.c
net/rose/sysctl_net_rose.c
net/sctp/sysctl.c
net/sunrpc/sysctl.c
net/sunrpc/xprtrdma/svc_rdma.c
net/sunrpc/xprtrdma/transport.c
net/sunrpc/xprtsock.c
net/unix/sysctl_net_unix.c
net/x25/sysctl_net_x25.c
net/xfrm/xfrm_sysctl.c
security/keys/sysctl.c
security/tomoyo/file.c
security/tomoyo/realpath.c
security/tomoyo/tomoyo.c
security/tomoyo/tomoyo.h

diff --git a/Documentation/sysctl/ctl_unnumbered.txt b/Documentation/sysctl/ctl_unnumbered.txt
deleted file mode 100644 (file)
index 23003a8..0000000
+++ /dev/null
@@ -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)
index 8ac9b84..3464859 100644 (file)
@@ -22,47 +22,42 @@ static unsigned int isa_membase, isa_portbase, isa_portshift;
 
 static ctl_table ctl_isa_vars[4] = {
        {
-               .ctl_name       = BUS_ISA_MEM_BASE,
                .procname       = "membase",
                .data           = &isa_membase, 
                .maxlen         = sizeof(isa_membase),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        }, {
-               .ctl_name       = BUS_ISA_PORT_BASE,
                .procname       = "portbase",
                .data           = &isa_portbase, 
                .maxlen         = sizeof(isa_portbase),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        }, {
-               .ctl_name       = BUS_ISA_PORT_SHIFT,
                .procname       = "portshift",
                .data           = &isa_portshift, 
                .maxlen         = sizeof(isa_portshift),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
-       }, {0}
+               .proc_handler   = proc_dointvec,
+       }, {}
 };
 
 static struct ctl_table_header *isa_sysctl_header;
 
 static ctl_table ctl_isa[2] = {
        {
-               .ctl_name       = CTL_BUS_ISA,
                .procname       = "isa",
                .mode           = 0555,
                .child          = ctl_isa_vars,
-       }, {0}
+       }, {}
 };
 
 static ctl_table ctl_bus[2] = {
        {
-               .ctl_name       = CTL_BUS,
                .procname       = "bus",
                .mode           = 0555,
                .child          = ctl_isa,
-       }, {0}
+       }, {}
 };
 
 void __init
index 0da693b..fbe6fa0 100644 (file)
@@ -47,10 +47,6 @@ HW_DECLARE_SPINLOCK(gpio)
     EXPORT_SYMBOL(bcmring_gpio_reg_lock);
 #endif
 
-/* FIXME: temporary solution */
-#define BCM_SYSCTL_REBOOT_WARM               1
-#define CTL_BCM_REBOOT                 112
-
 /* sysctl */
 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[] = {
        {
-        .ctl_name = BCM_SYSCTL_REBOOT_WARM,
         .procname = "warm",
         .data = &bcmring_arch_warm_reboot,
         .maxlen = sizeof(int),
         .mode = 0644,
-        .proc_handler = &proc_dointvec},
+        .proc_handler = proc_dointvec},
        {}
 };
 
 static struct ctl_table bcmring_sysctl_reboot[] = {
        {
-        .ctl_name = CTL_BCM_REBOOT,
         .procname = "reboot",
         .mode = 0555,
         .child = bcmring_sysctl_warm_reboot},
index 0d4d3e3..5fa3889 100644 (file)
@@ -211,37 +211,6 @@ static int cmode_procctl(ctl_table *ctl, int write,
        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)
 {
        unsigned long flags, clkc;
@@ -314,37 +283,6 @@ static int p0_procctl(ctl_table *ctl, int write,
        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,
                      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;
 }
 
-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[] =
 {
        {
-               .ctl_name       = CTL_PM_SUSPEND,
                .procname       = "suspend",
                .data           = NULL,
                .maxlen         = 0,
                .mode           = 0200,
-               .proc_handler   = &sysctl_pm_do_suspend,
+               .proc_handler   = sysctl_pm_do_suspend,
        },
        {
-               .ctl_name       = CTL_PM_CMODE,
                .procname       = "cmode",
                .data           = &clock_cmode_current,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &cmode_procctl,
-               .strategy       = &cmode_sysctl,
+               .proc_handler   = cmode_procctl,
        },
        {
-               .ctl_name       = CTL_PM_P0,
                .procname       = "p0",
                .data           = &clock_p0_current,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &p0_procctl,
-               .strategy       = &p0_sysctl,
+               .proc_handler   = p0_procctl,
        },
        {
-               .ctl_name       = CTL_PM_CM,
                .procname       = "cm",
                .data           = &clock_cm_current,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &cm_procctl,
-               .strategy       = &cm_sysctl,
+               .proc_handler   = cm_procctl,
        },
-       { .ctl_name = 0}
+       { }
 };
 
 static struct ctl_table pm_dir_table[] =
 {
        {
-               .ctl_name       = CTL_PM,
                .procname       = "pm",
                .mode           = 0555,
                .child          = pm_table,
        },
-       { .ctl_name = 0}
+       { }
 };
 
 /*
index 3e9d7e0..035516c 100644 (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[] =
 {
        {
-               .ctl_name       = 1,
                .procname       = "cache-mode",
                .data           = NULL,
                .maxlen         = 0,
                .mode           = 0644,
-               .proc_handler   = &procctl_frv_cachemode,
+               .proc_handler   = procctl_frv_cachemode,
        },
 #ifdef CONFIG_MMU
        {
-               .ctl_name       = 2,
                .procname       = "pin-cxnr",
                .data           = NULL,
                .maxlen         = 0,
                .mode           = 0644,
-               .proc_handler   = &procctl_frv_pin_cxnr
+               .proc_handler   = procctl_frv_pin_cxnr
        },
 #endif
        {}
@@ -203,7 +201,6 @@ static struct ctl_table frv_table[] =
 static struct ctl_table frv_dir_table[] =
 {
        {
-               .ctl_name       = CTL_FRV,
                .procname       = "frv",
                .mode           = 0555,
                .child          = frv_table
index af9405c..10c3751 100644 (file)
@@ -327,7 +327,7 @@ ia32_syscall_table:
        data8 compat_sys_writev
        data8 sys_getsid
        data8 sys_fdatasync
-       data8 sys32_sysctl
+       data8 compat_sys_sysctl
        data8 sys_mlock           /* 150 */
        data8 sys_munlock
        data8 sys_mlockall
index 625ed8f..429ec96 100644 (file)
@@ -1628,61 +1628,6 @@ sys32_msync (unsigned int start, unsigned int len, int 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
 sys32_newuname (struct new_utsname __user *name)
 {
index 6631a9d..b942f40 100644 (file)
@@ -239,32 +239,29 @@ kdump_init_notifier(struct notifier_block *self, unsigned long val, void *data)
 #ifdef CONFIG_SYSCTL
 static ctl_table kdump_ctl_table[] = {
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "kdump_on_init",
                .data = &kdump_on_init,
                .maxlen = sizeof(int),
                .mode = 0644,
-               .proc_handler = &proc_dointvec,
+               .proc_handler = proc_dointvec,
        },
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "kdump_on_fatal_mca",
                .data = &kdump_on_fatal_mca,
                .maxlen = sizeof(int),
                .mode = 0644,
-               .proc_handler = &proc_dointvec,
+               .proc_handler = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table sys_table[] = {
        {
-         .ctl_name = CTL_KERN,
          .procname = "kernel",
          .mode = 0555,
          .child = kdump_ctl_table,
        },
-       { .ctl_name = 0 }
+       { }
 };
 #endif
 
index f178270..402698b 100644 (file)
@@ -522,42 +522,37 @@ EXPORT_SYMBOL(pfm_sysctl);
 
 static ctl_table pfm_ctl_table[]={
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "debug",
                .data           = &pfm_sysctl.debug,
                .maxlen         = sizeof(int),
                .mode           = 0666,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "debug_ovfl",
                .data           = &pfm_sysctl.debug_ovfl,
                .maxlen         = sizeof(int),
                .mode           = 0666,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "fastctxsw",
                .data           = &pfm_sysctl.fastctxsw,
                .maxlen         = sizeof(int),
                .mode           = 0600,
-               .proc_handler   =  &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "expert_mode",
                .data           = &pfm_sysctl.expert_mode,
                .maxlen         = sizeof(int),
                .mode           = 0600,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {}
 };
 static ctl_table pfm_sysctl_dir[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "perfmon",
                .mode           = 0555,
                .child          = pfm_ctl_table,
@@ -566,7 +561,6 @@ static ctl_table pfm_sysctl_dir[] = {
 };
 static ctl_table pfm_sysctl_root[] = {
        {
-               .ctl_name       = CTL_KERN,
                .procname       = "kernel",
                .mode           = 0555,
                .child          = pfm_sysctl_dir,
index b77fefa..1a2793e 100644 (file)
@@ -265,67 +265,6 @@ SYSCALL_DEFINE5(n32_msgrcv, int, msqid, u32, msgp, size_t, msgsz,
 }
 #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)
 {
        int ret = 0;
index 6ebc079..8a0be0b 100644 (file)
@@ -272,7 +272,7 @@ EXPORT(sysn32_call_table)
        PTR     sys_munlockall
        PTR     sys_vhangup                     /* 6150 */
        PTR     sys_pivot_root
-       PTR     sys_32_sysctl
+       PTR     compat_sys_sysctl
        PTR     sys_prctl
        PTR     compat_sys_adjtimex
        PTR     compat_sys_setrlimit            /* 6155 */
index 14dde4c..41dbdb7 100644 (file)
@@ -356,7 +356,7 @@ sys_call_table:
        PTR     sys_ni_syscall                  /* 4150 */
        PTR     sys_getsid
        PTR     sys_fdatasync
-       PTR     sys_32_sysctl
+       PTR     compat_sys_sysctl
        PTR     sys_mlock
        PTR     sys_munlock                     /* 4155 */
        PTR     sys_mlockall
index b3deed8..14b9a28 100644 (file)
 #include "ds1603.h"
 #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 */
 int proc_dolasatstring(ctl_table *table, int write,
@@ -113,46 +96,6 @@ int proc_dolasatrtc(ctl_table *table, int write,
 }
 #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
 int proc_lasat_ip(ctl_table *table, int write,
                       void *buffer, size_t *lenp, loff_t *ppos)
@@ -214,23 +157,6 @@ int proc_lasat_ip(ctl_table *table, int write,
 }
 #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,
                       void *buffer, size_t *lenp, loff_t *ppos)
 {
@@ -252,115 +178,92 @@ extern int lasat_boot_to_service;
 
 static ctl_table lasat_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "cpu-hz",
                .data           = &lasat_board_info.li_cpu_hz,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "bus-hz",
                .data           = &lasat_board_info.li_bus_hz,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "bmid",
                .data           = &lasat_board_info.li_bmid,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "prid",
                .data           = &lasat_board_info.li_prid,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_lasat_prid,
-               .strategy       = &sysctl_lasat_prid
-       },
+               .proc_handler   = proc_lasat_prid,
+.      },
 #ifdef CONFIG_INET
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "ipaddr",
                .data           = &lasat_board_info.li_eeprom_info.ipaddr,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_lasat_ip,
-               .strategy       = &sysctl_lasat_intvec
+               .proc_handler   = proc_lasat_ip,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "netmask",
                .data           = &lasat_board_info.li_eeprom_info.netmask,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_lasat_ip,
-               .strategy       = &sysctl_lasat_intvec
+               .proc_handler   = proc_lasat_ip,
        },
 #endif
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "passwd_hash",
                .data           = &lasat_board_info.li_eeprom_info.passwd_hash,
                .maxlen         =
                        sizeof(lasat_board_info.li_eeprom_info.passwd_hash),
                .mode           = 0600,
-               .proc_handler   = &proc_dolasatstring,
-               .strategy       = &sysctl_lasatstring
+               .proc_handler   = proc_dolasatstring,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "boot-service",
                .data           = &lasat_boot_to_service,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec
+               .proc_handler   = proc_dointvec,
        },
 #ifdef CONFIG_DS1603
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rtc",
                .data           = &rtctmp,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dolasatrtc,
-               .strategy       = &sysctl_lasat_rtc
+               .proc_handler   = proc_dolasatrtc,
        },
 #endif
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "namestr",
                .data           = &lasat_board_info.li_namestr,
                .maxlen         = sizeof(lasat_board_info.li_namestr),
                .mode           = 0444,
-               .proc_handler   = &proc_dostring,
-               .strategy       = &sysctl_string
+               .proc_handler   = proc_dostring,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "typestr",
                .data           = &lasat_board_info.li_typestr,
                .maxlen         = sizeof(lasat_board_info.li_typestr),
                .mode           = 0444,
-               .proc_handler   = &proc_dostring,
-               .strategy       = &sysctl_string
+               .proc_handler   = proc_dostring,
        },
        {}
 };
 
 static ctl_table lasat_root_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "lasat",
                .mode           =  0555,
                .child          = lasat_table
index 561388b..76d23ec 100644 (file)
@@ -90,77 +90,6 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,
     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,
        struct compat_timespec __user *interval)
 {
index 843f423..01c4fcf 100644 (file)
        ENTRY_SAME(getsid)
        ENTRY_SAME(fdatasync)
        /* struct __sysctl_args is a mess */
-       ENTRY_DIFF(sysctl)
+       ENTRY_COMP(sysctl)
        ENTRY_SAME(mlock)               /* 150 */
        ENTRY_SAME(munlock)
        ENTRY_SAME(mlockall)
index 88d9c1d..049dda6 100644 (file)
@@ -110,18 +110,16 @@ int powersave_nap;
  */
 static ctl_table powersave_nap_ctl_table[]={
        {
-               .ctl_name       = KERN_PPC_POWERSAVE_NAP,
                .procname       = "powersave-nap",
                .data           = &powersave_nap,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {}
 };
 static ctl_table powersave_nap_sysctl_root[] = {
        {
-               .ctl_name       = CTL_KERN,
                .procname       = "kernel",
                .mode           = 0555,
                .child          = powersave_nap_ctl_table,
index b97c2d6..c5a4732 100644 (file)
@@ -520,58 +520,6 @@ asmlinkage long compat_sys_umask(u32 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 prot, unsigned long flags,
                          unsigned long fd, unsigned long pgoff)
index b55fd7e..4955899 100644 (file)
@@ -61,12 +61,12 @@ static struct ctl_table appldata_table[] = {
        {
                .procname       = "timer",
                .mode           = S_IRUGO | S_IWUSR,
-               .proc_handler   = &appldata_timer_handler,
+               .proc_handler   = appldata_timer_handler,
        },
        {
                .procname       = "interval",
                .mode           = S_IRUGO | S_IWUSR,
-               .proc_handler   = &appldata_interval_handler,
+               .proc_handler   = appldata_interval_handler,
        },
        { },
 };
index 0debcec..fda1a81 100644 (file)
@@ -527,59 +527,6 @@ asmlinkage long sys32_sendfile64(int out_fd, int in_fd,
        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 {
        unsigned long long  st_dev;
        unsigned int    __pad1;
index c07f9ca..45e9092 100644 (file)
@@ -162,7 +162,6 @@ struct ucontext32 {
        compat_sigset_t         uc_sigmask;     /* mask last for extensibility */
 };
 
-struct __sysctl_args32;
 struct stat64_emu31;
 struct mmap_arg_struct_emu31;
 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);
 long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset,
                      s32 count);
-long sys32_sysctl(struct __sysctl_args32 __user *args);
 long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf);
 long sys32_lstat64(char __user * filename,
                   struct stat64_emu31 __user * statbuf);
index cbd9901..30de2d0 100644 (file)
@@ -689,8 +689,6 @@ sys32_fdatasync_wrapper:
        llgfr   %r2,%r2                 # unsigned int
        jg      sys_fdatasync           # branch to system call
 
-#sys32_sysctl_wrapper                  # tbd
-
        .globl  sys32_mlock_wrapper
 sys32_mlock_wrapper:
        llgfr   %r2,%r2                 # unsigned long
@@ -1087,8 +1085,8 @@ sys32_stime_wrapper:
 
        .globl  sys32_sysctl_wrapper
 sys32_sysctl_wrapper:
-       llgtr   %r2,%r2                 # struct __sysctl_args32 *
-       jg      sys32_sysctl
+       llgtr   %r2,%r2                 # struct compat_sysctl_args *
+       jg      compat_sys_sysctl
 
        .globl  sys32_fstat64_wrapper
 sys32_fstat64_wrapper:
index 20f282c..071c81f 100644 (file)
@@ -893,35 +893,30 @@ s390dbf_procactive(ctl_table *table, int write,
 
 static struct ctl_table s390dbf_table[] = {
        {
-               .ctl_name       = CTL_S390DBF_STOPPABLE,
                .procname       = "debug_stoppable",
                .data           = &debug_stoppable,
                .maxlen         = sizeof(int),
                .mode           = S_IRUGO | S_IWUSR,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec,
        },
         {
-               .ctl_name       = CTL_S390DBF_ACTIVE,
                .procname       = "debug_active",
                .data           = &debug_active,
                .maxlen         = sizeof(int),
                .mode           = S_IRUGO | S_IWUSR,
-               .proc_handler   = &s390dbf_procactive,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = s390dbf_procactive,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table s390dbf_dir_table[] = {
        {
-               .ctl_name       = CTL_S390DBF,
                .procname       = "s390dbf",
                .maxlen         = 0,
                .mode           = S_IRUGO | S_IXUGO,
                .child          = s390dbf_table,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table_header *s390dbf_sysctl_header;
index b201135..ff58779 100644 (file)
@@ -343,30 +343,29 @@ static struct ctl_table cmm_table[] = {
        {
                .procname       = "cmm_pages",
                .mode           = 0644,
-               .proc_handler   = &cmm_pages_handler,
+               .proc_handler   = cmm_pages_handler,
        },
        {
                .procname       = "cmm_timed_pages",
                .mode           = 0644,
-               .proc_handler   = &cmm_pages_handler,
+               .proc_handler   = cmm_pages_handler,
        },
        {
                .procname       = "cmm_timeout",
                .mode           = 0644,
-               .proc_handler   = &cmm_timeout_handler,
+               .proc_handler   = cmm_timeout_handler,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table cmm_dir_table[] = {
        {
-               .ctl_name       = CTL_VM,
                .procname       = "vm",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = cmm_table,
        },
-       { .ctl_name = 0 }
+       { }
 };
 #endif
 
index 267e5eb..75c0cbe 100644 (file)
@@ -877,44 +877,39 @@ static int misaligned_fixup(struct pt_regs *regs)
 
 static ctl_table unaligned_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "kernel_reports",
                .data           = &kernel_mode_unaligned_fixup_count,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec
+               .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "user_reports",
                .data           = &user_mode_unaligned_fixup_count,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec
+               .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "user_enable",
                .data           = &user_mode_unaligned_fixup_enable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec},
+               .proc_handler   = proc_dointvec},
        {}
 };
 
 static ctl_table unaligned_root[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "unaligned_fixup",
                .mode           = 0555,
-               unaligned_table
+               .child          = unaligned_table
        },
        {}
 };
 
 static ctl_table sh64_root[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sh64",
                .mode           = 0555,
                .child          = unaligned_root
index 04e28b2..f862372 100644 (file)
@@ -591,63 +591,6 @@ out:
        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,
                          unsigned long cookie_low,
                          char __user *buf, size_t len)
index 009825f..034b10e 100644 (file)
@@ -68,7 +68,7 @@ sys_call_table32:
        .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
        .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
 /*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
index 581b056..5d25848 100644 (file)
@@ -653,7 +653,7 @@ ia32_sys_call_table:
        .quad compat_sys_writev
        .quad sys_getsid
        .quad sys_fdatasync
-       .quad sys32_sysctl      /* sysctl */
+       .quad compat_sys_sysctl /* sysctl */
        .quad sys_mlock         /* 150 */
        .quad sys_munlock
        .quad sys_mlockall
index 9f55271..df82c0e 100644 (file)
@@ -434,62 +434,6 @@ asmlinkage long sys32_rt_sigqueueinfo(int pid, int sig,
        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 */
 asmlinkage long sys32_pread(unsigned int fd, char __user *ubuf, u32 count,
                            u32 poslo, u32 poshi)
index 72a6dcd..9af9dec 100644 (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_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_pwrite(unsigned int, char __user *, u32, u32, u32);
 
index 8cb4974..e02d92d 100644 (file)
@@ -237,7 +237,7 @@ static ctl_table kernel_table2[] = {
 };
 
 static ctl_table kernel_root_table2[] = {
-       { .ctl_name = CTL_KERN, .procname = "kernel", .mode = 0555,
+       { .procname = "kernel", .mode = 0555,
          .child = kernel_table2 },
        {}
 };
index 58bc00f..02b442e 100644 (file)
@@ -393,7 +393,6 @@ static ctl_table abi_table2[] = {
 
 static ctl_table abi_root_table2[] = {
        {
-               .ctl_name = CTL_ABI,
                .procname = "abi",
                .mode = 0555,
                .child = abi_table2
index 5dc07e4..1c38733 100644 (file)
 #ifdef CONFIG_CRYPTO_FIPS
 static struct ctl_table crypto_sysctl_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "fips_enabled",
                .data           = &fips_enabled,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec
-       },
-       {
-               .ctl_name = 0,
+               .proc_handler   = proc_dointvec
        },
+       {}
 };
 
 static struct ctl_table crypto_dir_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "crypto",
                .mode           = 0555,
                .child          = crypto_sysctl_table
        },
-       {
-               .ctl_name = 0,
-       },
+       {}
 };
 
 static struct ctl_table_header *crypto_sysctls;
index 614da5b..e3749d0 100644 (file)
@@ -3557,67 +3557,65 @@ static ctl_table cdrom_table[] = {
                .data           = &cdrom_sysctl_settings.info, 
                .maxlen         = CDROM_STR_SIZE,
                .mode           = 0444,
-               .proc_handler   = &cdrom_sysctl_info,
+               .proc_handler   = cdrom_sysctl_info,
        },
        {
                .procname       = "autoclose",
                .data           = &cdrom_sysctl_settings.autoclose,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &cdrom_sysctl_handler,
+               .proc_handler   = cdrom_sysctl_handler,
        },
        {
                .procname       = "autoeject",
                .data           = &cdrom_sysctl_settings.autoeject,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &cdrom_sysctl_handler,
+               .proc_handler   = cdrom_sysctl_handler,
        },
        {
                .procname       = "debug",
                .data           = &cdrom_sysctl_settings.debug,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &cdrom_sysctl_handler,
+               .proc_handler   = cdrom_sysctl_handler,
        },
        {
                .procname       = "lock",
                .data           = &cdrom_sysctl_settings.lock,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &cdrom_sysctl_handler,
+               .proc_handler   = cdrom_sysctl_handler,
        },
        {
                .procname       = "check_media",
                .data           = &cdrom_sysctl_settings.check,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &cdrom_sysctl_handler
+               .proc_handler   = cdrom_sysctl_handler
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table cdrom_cdrom_table[] = {
        {
-               .ctl_name       = DEV_CDROM,
                .procname       = "cdrom",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = cdrom_table,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 /* Make sure that /proc/sys/dev is there */
 static ctl_table cdrom_root_table[] = {
        {
-               .ctl_name       = CTL_DEV,
                .procname       = "dev",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = cdrom_cdrom_table,
        },
-       { .ctl_name = 0 }
+       { }
 };
 static struct ctl_table_header *cdrom_sysctl_header;
 
index 70a770a..e481c59 100644 (file)
@@ -675,36 +675,33 @@ static int hpet_is_known(struct hpet_data *hdp)
 
 static ctl_table hpet_table[] = {
        {
-        .ctl_name = CTL_UNNUMBERED,
         .procname = "max-user-freq",
         .data = &hpet_max_freq,
         .maxlen = sizeof(int),
         .mode = 0644,
-        .proc_handler = &proc_dointvec,
+        .proc_handler = proc_dointvec,
         },
-       {.ctl_name = 0}
+       {}
 };
 
 static ctl_table hpet_root[] = {
        {
-        .ctl_name = CTL_UNNUMBERED,
         .procname = "hpet",
         .maxlen = 0,
         .mode = 0555,
         .child = hpet_table,
         },
-       {.ctl_name = 0}
+       {}
 };
 
 static ctl_table dev_root[] = {
        {
-        .ctl_name = CTL_DEV,
         .procname = "dev",
         .maxlen = 0,
         .mode = 0555,
         .child = hpet_root,
         },
-       {.ctl_name = 0}
+       {}
 };
 
 static struct ctl_table_header *sysctl_header;
index 2e66b5f..0dec5da 100644 (file)
@@ -660,26 +660,23 @@ static struct ipmi_smi_watcher smi_watcher = {
 #include <linux/sysctl.h>
 
 static ctl_table ipmi_table[] = {
-       { .ctl_name     = DEV_IPMI_POWEROFF_POWERCYCLE,
-         .procname     = "poweroff_powercycle",
+       { .procname     = "poweroff_powercycle",
          .data         = &poweroff_powercycle,
          .maxlen       = sizeof(poweroff_powercycle),
          .mode         = 0644,
-         .proc_handler = &proc_dointvec },
+         .proc_handler = proc_dointvec },
        { }
 };
 
 static ctl_table ipmi_dir_table[] = {
-       { .ctl_name     = DEV_IPMI,
-         .procname     = "ipmi",
+       { .procname     = "ipmi",
          .mode         = 0555,
          .child        = ipmi_table },
        { }
 };
 
 static ctl_table ipmi_root_table[] = {
-       { .ctl_name     = CTL_DEV,
-         .procname     = "dev",
+       { .procname     = "dev",
          .mode         = 0555,
          .child        = ipmi_dir_table },
        { }
index 62f282e..d86c0bc 100644 (file)
@@ -431,30 +431,25 @@ static struct cdev ptmx_cdev;
 
 static struct ctl_table pty_table[] = {
        {
-               .ctl_name       = PTY_MAX,
                .procname       = "max",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .data           = &pty_limit,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &pty_limit_min,
                .extra2         = &pty_limit_max,
        }, {
-               .ctl_name       = PTY_NR,
                .procname       = "nr",
                .maxlen         = sizeof(int),
                .mode           = 0444,
                .data           = &pty_count,
-               .proc_handler   = &proc_dointvec,
-       }, {
-               .ctl_name       = 0
-       }
+               .proc_handler   = proc_dointvec,
+       }, 
+       {}
 };
 
 static struct ctl_table pty_kern_table[] = {
        {
-               .ctl_name       = KERN_PTY,
                .procname       = "pty",
                .mode           = 0555,
                .child          = pty_table,
@@ -464,7 +459,6 @@ static struct ctl_table pty_kern_table[] = {
 
 static struct ctl_table pty_root_table[] = {
        {
-               .ctl_name       = CTL_KERN,
                .procname       = "kernel",
                .mode           = 0555,
                .child          = pty_kern_table,
index 04b505e..dcd0863 100644 (file)
@@ -1257,94 +1257,54 @@ static int proc_do_uuid(ctl_table *table, int write,
        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;
 ctl_table random_table[] = {
        {
-               .ctl_name       = RANDOM_POOLSIZE,
                .procname       = "poolsize",
                .data           = &sysctl_poolsize,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = RANDOM_ENTROPY_COUNT,
                .procname       = "entropy_avail",
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
                .data           = &input_pool.entropy_count,
        },
        {
-               .ctl_name       = RANDOM_READ_THRESH,
                .procname       = "read_wakeup_threshold",
                .data           = &random_read_wakeup_thresh,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_read_thresh,
                .extra2         = &max_read_thresh,
        },
        {
-               .ctl_name       = RANDOM_WRITE_THRESH,
                .procname       = "write_wakeup_threshold",
                .data           = &random_write_wakeup_thresh,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_write_thresh,
                .extra2         = &max_write_thresh,
        },
        {
-               .ctl_name       = RANDOM_BOOT_ID,
                .procname       = "boot_id",
                .data           = &sysctl_bootid,
                .maxlen         = 16,
                .mode           = 0444,
-               .proc_handler   = &proc_do_uuid,
-               .strategy       = &uuid_strategy,
+               .proc_handler   = proc_do_uuid,
        },
        {
-               .ctl_name       = RANDOM_UUID,
                .procname       = "uuid",
                .maxlen         = 16,
                .mode           = 0444,
-               .proc_handler   = &proc_do_uuid,
-               .strategy       = &uuid_strategy,
+               .proc_handler   = proc_do_uuid,
        },
-       { .ctl_name = 0 }
+       { }
 };
 #endif         /* CONFIG_SYSCTL */
 
index bc4ab3e..95acb8c 100644 (file)
@@ -282,34 +282,31 @@ static irqreturn_t rtc_interrupt(int irq, void *dev_id)
  */
 static ctl_table rtc_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max-user-freq",
                .data           = &rtc_max_user_freq,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table rtc_root[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rtc",
                .mode           = 0555,
                .child          = rtc_table,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table dev_root[] = {
        {
-               .ctl_name       = CTL_DEV,
                .procname       = "dev",
                .mode           = 0555,
                .child          = rtc_root,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table_header *sysctl_header;
index cc9f275..7b4ef5b 100644 (file)
@@ -27,54 +27,49 @@ static int mouse_last_keycode;
 /* file(s) in /proc/sys/dev/mac_hid */
 static ctl_table mac_hid_files[] = {
        {
-               .ctl_name       = DEV_MAC_HID_MOUSE_BUTTON_EMULATION,
                .procname       = "mouse_button_emulation",
                .data           = &mouse_emulate_buttons,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE,
                .procname       = "mouse_button2_keycode",
                .data           = &mouse_button2_keycode,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE,
                .procname       = "mouse_button3_keycode",
                .data           = &mouse_button3_keycode,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 /* dir in /proc/sys/dev */
 static ctl_table mac_hid_dir[] = {
        {
-               .ctl_name       = DEV_MAC_HID,
                .procname       = "mac_hid",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = mac_hid_files,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 /* /proc/sys/dev itself, in case that is not there yet */
 static ctl_table mac_hid_root_dir[] = {
        {
-               .ctl_name       = CTL_DEV,
                .procname       = "dev",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = mac_hid_dir,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table_header *mac_hid_sysctl_header;
index b182f86..5f154ef 100644 (file)
@@ -98,44 +98,40 @@ static struct ctl_table_header *raid_table_header;
 
 static ctl_table raid_table[] = {
        {
-               .ctl_name       = DEV_RAID_SPEED_LIMIT_MIN,
                .procname       = "speed_limit_min",
                .data           = &sysctl_speed_limit_min,
                .maxlen         = sizeof(int),
                .mode           = S_IRUGO|S_IWUSR,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = DEV_RAID_SPEED_LIMIT_MAX,
                .procname       = "speed_limit_max",
                .data           = &sysctl_speed_limit_max,
                .maxlen         = sizeof(int),
                .mode           = S_IRUGO|S_IWUSR,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table raid_dir_table[] = {
        {
-               .ctl_name       = DEV_RAID,
                .procname       = "raid",
                .maxlen         = 0,
                .mode           = S_IRUGO|S_IXUGO,
                .child          = raid_table,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table raid_root_table[] = {
        {
-               .ctl_name       = CTL_DEV,
                .procname       = "dev",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = raid_dir_table,
        },
-       { .ctl_name = 0 }
+       {  }
 };
 
 static const struct block_device_operations md_fops;
index fd3688a..832ed4c 100644 (file)
@@ -89,48 +89,40 @@ static int xpc_disengage_max_timelimit = 120;
 
 static ctl_table xpc_sys_xpc_hb_dir[] = {
        {
-        .ctl_name = CTL_UNNUMBERED,
         .procname = "hb_interval",
         .data = &xpc_hb_interval,
         .maxlen = sizeof(int),
         .mode = 0644,
-        .proc_handler = &proc_dointvec_minmax,
-        .strategy = &sysctl_intvec,
+        .proc_handler = proc_dointvec_minmax,
         .extra1 = &xpc_hb_min_interval,
         .extra2 = &xpc_hb_max_interval},
        {
-        .ctl_name = CTL_UNNUMBERED,
         .procname = "hb_check_interval",
         .data = &xpc_hb_check_interval,
         .maxlen = sizeof(int),
         .mode = 0644,
-        .proc_handler = &proc_dointvec_minmax,
-        .strategy = &sysctl_intvec,
+        .proc_handler = proc_dointvec_minmax,
         .extra1 = &xpc_hb_check_min_interval,
         .extra2 = &xpc_hb_check_max_interval},
        {}
 };
 static ctl_table xpc_sys_xpc_dir[] = {
        {
-        .ctl_name = CTL_UNNUMBERED,
         .procname = "hb",
         .mode = 0555,
         .child = xpc_sys_xpc_hb_dir},
        {
-        .ctl_name = CTL_UNNUMBERED,
         .procname = "disengage_timelimit",
         .data = &xpc_disengage_timelimit,
         .maxlen = sizeof(int),
         .mode = 0644,
-        .proc_handler = &proc_dointvec_minmax,
-        .strategy = &sysctl_intvec,
+        .proc_handler = proc_dointvec_minmax,
         .extra1 = &xpc_disengage_min_timelimit,
         .extra2 = &xpc_disengage_max_timelimit},
        {}
 };
 static ctl_table xpc_sys_dir[] = {
        {
-        .ctl_name = CTL_UNNUMBERED,
         .procname = "xpc",
         .mode = 0555,
         .child = xpc_sys_xpc_dir},
index a8b6896..b22983e 100644 (file)
@@ -816,84 +816,83 @@ static int arlan_sysctl_reset(ctl_table * ctl, int write,
 
 
 /* Place files in /proc/sys/dev/arlan */
-#define CTBLN(num,card,nam) \
-        { .ctl_name = num,\
-          .procname = #nam,\
+#define CTBLN(card,nam) \
+        { .procname = #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
 
 #define ARLAN_PROC_DEBUG_ENTRIES \
-        { .ctl_name = 48, .procname = "entry_exit_debug",\
+        { .procname = "entry_exit_debug",\
           .data = &arlan_entry_and_exit_debug,\
-          .maxlen = sizeof(int), .mode = 0600, .proc_handler = &proc_dointvec},\
-       { .ctl_name = 49, .procname = "debug", .data = &arlan_debug,\
-          .maxlen = sizeof(int), .mode = 0600, .proc_handler = &proc_dointvec},
+          .maxlen = sizeof(int), .mode = 0600, .proc_handler = proc_dointvec},\
+       { .procname = "debug", .data = &arlan_debug,\
+          .maxlen = sizeof(int), .mode = 0600, .proc_handler = proc_dointvec},
 #else 
 #define ARLAN_PROC_DEBUG_ENTRIES
 #endif
 
 #define ARLAN_SYSCTL_TABLE_TOTAL(cardNo)\
-       CTBLN(1,cardNo,spreadingCode),\
-       CTBLN(2,cardNo, channelNumber),\
-       CTBLN(3,cardNo, scramblingDisable),\
-       CTBLN(4,cardNo, txAttenuation),\
-       CTBLN(5,cardNo, systemId), \
-       CTBLN(6,cardNo, maxDatagramSize),\
-       CTBLN(7,cardNo, maxFrameSize),\
-       CTBLN(8,cardNo, maxRetries),\
-       CTBLN(9,cardNo, receiveMode),\
-       CTBLN(10,cardNo, priority),\
-       CTBLN(11,cardNo, rootOrRepeater),\
-       CTBLN(12,cardNo, SID),\
-       CTBLN(13,cardNo, registrationMode),\
-       CTBLN(14,cardNo, registrationFill),\
-       CTBLN(15,cardNo, localTalkAddress),\
-       CTBLN(16,cardNo, codeFormat),\
-       CTBLN(17,cardNo, numChannels),\
-       CTBLN(18,cardNo, channel1),\
-       CTBLN(19,cardNo, channel2),\
-       CTBLN(20,cardNo, channel3),\
-       CTBLN(21,cardNo, channel4),\
-       CTBLN(22,cardNo, txClear),\
-       CTBLN(23,cardNo, txRetries),\
-       CTBLN(24,cardNo, txRouting),\
-       CTBLN(25,cardNo, txScrambled),\
-       CTBLN(26,cardNo, rxParameter),\
-       CTBLN(27,cardNo, txTimeoutMs),\
-       CTBLN(28,cardNo, waitCardTimeout),\
-       CTBLN(29,cardNo, channelSet), \
-       {.ctl_name = 30, .procname = "name",\
+       CTBLN(cardNo,spreadingCode),\
+       CTBLN(cardNo, channelNumber),\
+       CTBLN(cardNo, scramblingDisable),\
+       CTBLN(cardNo, txAttenuation),\
+       CTBLN(cardNo, systemId), \
+       CTBLN(cardNo, maxDatagramSize),\
+       CTBLN(cardNo, maxFrameSize),\
+       CTBLN(cardNo, maxRetries),\
+       CTBLN(cardNo, receiveMode),\
+       CTBLN(cardNo, priority),\
+       CTBLN(cardNo, rootOrRepeater),\
+       CTBLN(cardNo, SID),\
+       CTBLN(cardNo, registrationMode),\
+       CTBLN(cardNo, registrationFill),\
+       CTBLN(cardNo, localTalkAddress),\
+       CTBLN(cardNo, codeFormat),\
+       CTBLN(cardNo, numChannels),\
+       CTBLN(cardNo, channel1),\
+       CTBLN(cardNo, channel2),\
+       CTBLN(cardNo, channel3),\
+       CTBLN(cardNo, channel4),\
+       CTBLN(cardNo, txClear),\
+       CTBLN(cardNo, txRetries),\
+       CTBLN(cardNo, txRouting),\
+       CTBLN(cardNo, txScrambled),\
+       CTBLN(cardNo, rxParameter),\
+       CTBLN(cardNo, txTimeoutMs),\
+       CTBLN(cardNo, waitCardTimeout),\
+       CTBLN(cardNo, channelSet), \
+       { .procname = "name",\
         .data = arlan_conf[cardNo].siteName,\
-        .maxlen = 16, .mode = 0600, .proc_handler = &proc_dostring},\
-       CTBLN(31,cardNo,waitTime),\
-       CTBLN(32,cardNo,lParameter),\
-       CTBLN(33,cardNo,_15),\
-       CTBLN(34,cardNo,headerSize),\
-       CTBLN(36,cardNo,tx_delay_ms),\
-       CTBLN(37,cardNo,retries),\
-       CTBLN(38,cardNo,ReTransmitPacketMaxSize),\
-       CTBLN(39,cardNo,waitReTransmitPacketMaxSize),\
-       CTBLN(40,cardNo,fastReTransCount),\
-       CTBLN(41,cardNo,driverRetransmissions),\
-       CTBLN(42,cardNo,txAckTimeoutMs),\
-       CTBLN(43,cardNo,registrationInterrupts),\
-       CTBLN(44,cardNo,hardwareType),\
-       CTBLN(45,cardNo,radioType),\
-       CTBLN(46,cardNo,writeEEPROM),\
-       CTBLN(47,cardNo,writeRadioType),\
+        .maxlen = 16, .mode = 0600, .proc_handler = proc_dostring},\
+       CTBLN(cardNo,waitTime),\
+       CTBLN(cardNo,lParameter),\
+       CTBLN(cardNo,_15),\
+       CTBLN(cardNo,headerSize),\
+       CTBLN(cardNo,tx_delay_ms),\
+       CTBLN(cardNo,retries),\
+       CTBLN(cardNo,ReTransmitPacketMaxSize),\
+       CTBLN(cardNo,waitReTransmitPacketMaxSize),\
+       CTBLN(cardNo,fastReTransCount),\
+       CTBLN(cardNo,driverRetransmissions),\
+       CTBLN(cardNo,txAckTimeoutMs),\
+       CTBLN(cardNo,registrationInterrupts),\
+       CTBLN(cardNo,hardwareType),\
+       CTBLN(cardNo,radioType),\
+       CTBLN(cardNo,writeEEPROM),\
+       CTBLN(cardNo,writeRadioType),\
        ARLAN_PROC_DEBUG_ENTRIES\
-       CTBLN(50,cardNo,in_speed),\
-       CTBLN(51,cardNo,out_speed),\
-       CTBLN(52,cardNo,in_speed10),\
-       CTBLN(53,cardNo,out_speed10),\
-       CTBLN(54,cardNo,in_speed_max),\
-       CTBLN(55,cardNo,out_speed_max),\
-       CTBLN(56,cardNo,measure_rate),\
-       CTBLN(57,cardNo,pre_Command_Wait),\
-       CTBLN(58,cardNo,rx_tweak1),\
-       CTBLN(59,cardNo,rx_tweak2),\
-       CTBLN(60,cardNo,tx_queue_len),\
+       CTBLN(cardNo,in_speed),\
+       CTBLN(cardNo,out_speed),\
+       CTBLN(cardNo,in_speed10),\
+       CTBLN(cardNo,out_speed10),\
+       CTBLN(cardNo,in_speed_max),\
+       CTBLN(cardNo,out_speed_max),\
+       CTBLN(cardNo,measure_rate),\
+       CTBLN(cardNo,pre_Command_Wait),\
+       CTBLN(cardNo,rx_tweak1),\
+       CTBLN(cardNo,rx_tweak2),\
+       CTBLN(cardNo,tx_queue_len),\
 
 
 
@@ -903,63 +902,56 @@ static ctl_table arlan_conf_table0[] =
 
 #ifdef ARLAN_PROC_SHM_DUMP
        {
-               .ctl_name       = 150,
                .procname       = "arlan0-txRing",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_infotxRing,
+               .proc_handler   = arlan_sysctl_infotxRing,
        },
        {
-               .ctl_name       = 151,
                .procname       = "arlan0-rxRing",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_inforxRing,
+               .proc_handler   = arlan_sysctl_inforxRing,
        },
        {
-               .ctl_name       = 152,
                .procname       = "arlan0-18",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info18,
+               .proc_handler   = arlan_sysctl_info18,
        },
        {
-               .ctl_name       = 153,
                .procname       = "arlan0-ring",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info161719,
+               .proc_handler   = arlan_sysctl_info161719,
        },
        {
-               .ctl_name       = 154,
                .procname       = "arlan0-shm-cpy",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info,
+               .proc_handler   = arlan_sysctl_info,
        },
 #endif
        {
-               .ctl_name       = 155,
                .procname       = "config0",
                .data           = &conf_reset_result,
                .maxlen         = 100,
                .mode           = 0400,
-               .proc_handler   = &arlan_configure
+               .proc_handler   = arlan_configure
        },
        {
-               .ctl_name       = 156,
                .procname       = "reset0",
                .data           = &conf_reset_result,
                .maxlen         = 100,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_reset,
+               .proc_handler   = arlan_sysctl_reset,
        },
-       { .ctl_name = 0 }
+       {  }
 };
 
 static ctl_table arlan_conf_table1[] =
@@ -969,63 +961,56 @@ static ctl_table arlan_conf_table1[] =
 
 #ifdef ARLAN_PROC_SHM_DUMP
        {
-               .ctl_name       = 150,
                .procname       = "arlan1-txRing",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_infotxRing,
+               .proc_handler   = arlan_sysctl_infotxRing,
        },
        {
-               .ctl_name       = 151,
                .procname       = "arlan1-rxRing",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_inforxRing,
+               .proc_handler   = arlan_sysctl_inforxRing,
        },
        {
-               .ctl_name       = 152,
                .procname       = "arlan1-18",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info18,
+               .proc_handler   = arlan_sysctl_info18,
        },
        {
-               .ctl_name       = 153,
                .procname       = "arlan1-ring",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info161719,
+               .proc_handler   = arlan_sysctl_info161719,
        },
        {
-               .ctl_name       = 154,
                .procname       = "arlan1-shm-cpy",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info,
+               .proc_handler   = arlan_sysctl_info,
        },
 #endif
        {
-               .ctl_name       = 155,
                .procname       = "config1",
                .data           = &conf_reset_result,
                .maxlen         = 100,
                .mode           = 0400,
-               .proc_handler   = &arlan_configure,
+               .proc_handler   = arlan_configure,
        },
        {
-               .ctl_name       = 156,
                .procname       = "reset1",
                .data           = &conf_reset_result,
                .maxlen         = 100,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_reset,
+               .proc_handler   = arlan_sysctl_reset,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table arlan_conf_table2[] =
@@ -1035,63 +1020,56 @@ static ctl_table arlan_conf_table2[] =
 
 #ifdef ARLAN_PROC_SHM_DUMP
        {
-               .ctl_name       = 150,
                .procname       = "arlan2-txRing",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_infotxRing,
+               .proc_handler   = arlan_sysctl_infotxRing,
        },
        {
-               .ctl_name       = 151,
                .procname       = "arlan2-rxRing",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_inforxRing,
+               .proc_handler   = arlan_sysctl_inforxRing,
        },
        {
-               .ctl_name       = 152,
                .procname       = "arlan2-18",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info18,
+               .proc_handler   = arlan_sysctl_info18,
        },
        {
-               .ctl_name       = 153,
                .procname       = "arlan2-ring",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info161719,
+               .proc_handler   = arlan_sysctl_info161719,
        },
        {
-               .ctl_name       = 154,
                .procname       = "arlan2-shm-cpy",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info,
+               .proc_handler   = arlan_sysctl_info,
        },
 #endif
        {
-               .ctl_name       = 155,
                .procname       = "config2",
                .data           = &conf_reset_result,
                .maxlen         = 100,
                .mode           = 0400,
-               .proc_handler   = &arlan_configure,
+               .proc_handler   = arlan_configure,
        },
        {
-               .ctl_name       = 156,
                .procname       = "reset2",
                .data           = &conf_reset_result,
                .maxlen         = 100,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_reset,
+               .proc_handler   = arlan_sysctl_reset,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table arlan_conf_table3[] =
@@ -1101,63 +1079,56 @@ static ctl_table arlan_conf_table3[] =
 
 #ifdef ARLAN_PROC_SHM_DUMP
        {
-               .ctl_name       = 150,
                .procname       = "arlan3-txRing",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_infotxRing,
+               .proc_handler   = arlan_sysctl_infotxRing,
        },
        {
-               .ctl_name       = 151,
                .procname       = "arlan3-rxRing",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_inforxRing,
+               .proc_handler   = arlan_sysctl_inforxRing,
        },
        {
-               .ctl_name       = 152,
                .procname       = "arlan3-18",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info18,
+               .proc_handler   = arlan_sysctl_info18,
        },
        {
-               .ctl_name       = 153,
                .procname       = "arlan3-ring",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info161719,
+               .proc_handler   = arlan_sysctl_info161719,
        },
        {
-               .ctl_name       = 154,
                .procname       = "arlan3-shm-cpy",
                .data           = &arlan_drive_info,
                .maxlen         = ARLAN_STR_SIZE,
                .mode           = 0400,
-               .proc_handler   = &arlan_sysctl_info,
+               .proc_handler   = arlan_sysctl_info,
        },
 #endif
        {
-               .ctl_name       = 155,
                .procname       = "config3",
                .data           = &conf_reset_result,
                .maxlen         = 100,
                .mode           = 0400,
-               .proc_handler   = &arlan_configure,
+               .proc_handler   = arlan_configure,
        },
        {
-               .ctl_name       = 156,
                .procname       = "reset3",
                .data           = &conf_reset_result,
                .maxlen         = 100,
                .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[] =
 {
        {
-               .ctl_name       = 0,
                .procname       = "arlan0",
                .maxlen         = 0,
                .mode           = 0600,
                .child          = arlan_conf_table0,
        },
        {
-               .ctl_name       = 0,
                .procname       = "arlan1",
                .maxlen         = 0,
                .mode           = 0600,
                .child          = arlan_conf_table1,
        },
        {
-               .ctl_name       = 0,
                .procname       = "arlan2",
                .maxlen         = 0,
                .mode           = 0600,
                .child          = arlan_conf_table2,
        },
        {
-               .ctl_name       = 0,
                .procname       = "arlan3",
                .maxlen         = 0,
                .mode           = 0600,
                .child          = arlan_conf_table3,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 #else
 
-static ctl_table arlan_table[MAX_ARLANS + 1] =
+static ctl_table arlan_table[] =
 {
-       { .ctl_name = 0 }
+       { }
 };
 #endif
 
@@ -1209,22 +1176,14 @@ static ctl_table arlan_table[MAX_ARLANS + 1] =
 static ctl_table arlan_root_table[] =
 {
        {
-               .ctl_name       = CTL_ARLAN,
                .procname       = "arlan",
                .maxlen         = 0,
                .mode           = 0555,
                .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;
 
@@ -1234,8 +1193,6 @@ int __init init_arlan_proc(void)
        int i = 0;
        if (arlan_device_sysctl_header)
                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);
        if (!arlan_device_sysctl_header)
                return -1;
index 8eefe56..3f56bc0 100644 (file)
@@ -233,10 +233,10 @@ static int do_hardware_modes (ctl_table *table, int write,
        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_PARPORT_DIR(CHILD) { .ctl_name = DEV_PARPORT, .procname = "parport", \
+#define PARPORT_PORT_DIR(CHILD) { .procname = NULL, .mode = 0555, .child = CHILD }
+#define PARPORT_PARPORT_DIR(CHILD) { .procname = "parport", \
                                      .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", \
                                     .mode = 0555, .child = NULL }
 
@@ -270,7 +270,7 @@ static const struct parport_sysctl_table parport_sysctl_template = {
                        .data           = NULL,
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
-                       .proc_handler   = &proc_dointvec_minmax,
+                       .proc_handler   = proc_dointvec_minmax,
                        .extra1         = (void*) &parport_min_spintime_value,
                        .extra2         = (void*) &parport_max_spintime_value
                },
@@ -279,28 +279,28 @@ static const struct parport_sysctl_table parport_sysctl_template = {
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   = &do_hardware_base_addr
+                       .proc_handler   = do_hardware_base_addr
                },
                {
                        .procname       = "irq",
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   = &do_hardware_irq
+                       .proc_handler   = do_hardware_irq
                },
                {
                        .procname       = "dma",
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   = &do_hardware_dma
+                       .proc_handler   = do_hardware_dma
                },
                {
                        .procname       = "modes",
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   = &do_hardware_modes
+                       .proc_handler   = do_hardware_modes
                },
                PARPORT_DEVICES_ROOT_DIR,
 #ifdef CONFIG_PARPORT_1284
@@ -309,35 +309,35 @@ static const struct parport_sysctl_table parport_sysctl_template = {
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   = &do_autoprobe
+                       .proc_handler   = do_autoprobe
                },
                {
                        .procname       = "autoprobe0",
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   =  &do_autoprobe
+                       .proc_handler   = do_autoprobe
                },
                {
                        .procname       = "autoprobe1",
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   = &do_autoprobe
+                       .proc_handler   = do_autoprobe
                },
                {
                        .procname       = "autoprobe2",
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   = &do_autoprobe
+                       .proc_handler   = do_autoprobe
                },
                {
                        .procname       = "autoprobe3",
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   = &do_autoprobe
+                       .proc_handler   = do_autoprobe
                },
 #endif /* IEEE 1284 support */
                {}
@@ -348,7 +348,7 @@ static const struct parport_sysctl_table parport_sysctl_template = {
                        .data           = NULL,
                        .maxlen         = 0,
                        .mode           = 0444,
-                       .proc_handler   = &do_active_device
+                       .proc_handler   = do_active_device
                },
                {}
        },
@@ -386,14 +386,13 @@ parport_device_sysctl_template = {
                        .data           = NULL,
                        .maxlen         = sizeof(unsigned long),
                        .mode           = 0644,
-                       .proc_handler   = &proc_doulongvec_ms_jiffies_minmax,
+                       .proc_handler   = proc_doulongvec_ms_jiffies_minmax,
                        .extra1         = (void*) &parport_min_timeslice_value,
                        .extra2         = (void*) &parport_max_timeslice_value
                },
        },
        {
                {
-                       .ctl_name       = 0,
                        .procname       = NULL,
                        .data           = NULL,
                        .maxlen         = 0,
@@ -438,7 +437,7 @@ parport_default_sysctl_table = {
                        .data           = &parport_default_timeslice,
                        .maxlen         = sizeof(parport_default_timeslice),
                        .mode           = 0644,
-                       .proc_handler   = &proc_doulongvec_ms_jiffies_minmax,
+                       .proc_handler   = proc_doulongvec_ms_jiffies_minmax,
                        .extra1         = (void*) &parport_min_timeslice_value,
                        .extra2         = (void*) &parport_max_timeslice_value
                },
@@ -447,7 +446,7 @@ parport_default_sysctl_table = {
                        .data           = &parport_default_spintime,
                        .maxlen         = sizeof(parport_default_spintime),
                        .mode           = 0644,
-                       .proc_handler   = &proc_dointvec_minmax,
+                       .proc_handler   = proc_dointvec_minmax,
                        .extra1         = (void*) &parport_min_spintime_value,
                        .extra2         = (void*) &parport_max_spintime_value
                },
@@ -455,7 +454,6 @@ parport_default_sysctl_table = {
        },
        {
                {
-                       .ctl_name       = DEV_PARPORT_DEFAULT,
                        .procname       = "default",
                        .mode           = 0555,
                        .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->port_dir[0].procname = port->name;
-       t->port_dir[0].ctl_name = 0;
 
        t->port_dir[0].child = t->vars;
        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->parport_dir[0].child = t->port_dir;
        t->port_dir[0].procname = port->name;
-       t->port_dir[0].ctl_name = 0;
        t->port_dir[0].child = t->devices_root_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].child = t->vars;
        t->vars[0].data = &device->timeslice;
index b44462a..740fe40 100644 (file)
@@ -101,18 +101,17 @@ static struct ctl_table callhome_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_handler_callhome,
        },
-       { .ctl_name = 0 }
+       {}
 };
 
 static struct ctl_table kern_dir_table[] = {
        {
-               .ctl_name       = CTL_KERN,
                .procname       = "kernel",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = callhome_table,
        },
-       { .ctl_name = 0 }
+       {}
 };
 
 /*
index 63a30f5..2b6b93f 100644 (file)
 
 
 static ctl_table scsi_table[] = {
-       { .ctl_name     = DEV_SCSI_LOGGING_LEVEL,
-         .procname     = "logging_level",
+       { .procname     = "logging_level",
          .data         = &scsi_logging_level,
          .maxlen       = sizeof(scsi_logging_level),
          .mode         = 0644,
-         .proc_handler = &proc_dointvec },
+         .proc_handler = proc_dointvec },
        { }
 };
 
 static ctl_table scsi_dir_table[] = {
-       { .ctl_name     = DEV_SCSI,
-         .procname     = "scsi",
+       { .procname     = "scsi",
          .mode         = 0555,
          .child        = scsi_table },
        { }
 };
 
 static ctl_table scsi_root_table[] = {
-       { .ctl_name     = CTL_DEV,
-         .procname     = "dev",
+       { .procname     = "dev",
          .mode         = 0555,
          .child        = scsi_dir_table },
        { }
index 43c96ce..c6405ce 100644 (file)
@@ -17,28 +17,25 @@ static struct ctl_table_header *fs_table_header;
 
 static ctl_table coda_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "timeout",
                .data           = &coda_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec
+               .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "hard",
                .data           = &coda_hard,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec
+               .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "fake_statfs",
                .data           = &coda_fake_statfs,
                .maxlen         = sizeof(int),
                .mode           = 0600,
-               .proc_handler   = &proc_dointvec
+               .proc_handler   = proc_dointvec
        },
        {}
 };
@@ -46,7 +43,6 @@ static ctl_table coda_table[] = {
 #ifdef CONFIG_SYSCTL
 static ctl_table fs_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "coda",
                .mode           = 0555,
                .child          = coda_table
index 085c5c0..366c503 100644 (file)
@@ -251,10 +251,10 @@ ctl_table epoll_table[] = {
                .data           = &max_user_watches,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
        },
-       { .ctl_name = 0 }
+       { }
 };
 #endif /* CONFIG_SYSCTL */
 
index 1a54ae1..e50cfa3 100644 (file)
@@ -371,82 +371,74 @@ EXPORT_SYMBOL_GPL(lockd_down);
 
 static ctl_table nlm_sysctls[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nlm_grace_period",
                .data           = &nlm_grace_period,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = (unsigned long *) &nlm_grace_period_min,
                .extra2         = (unsigned long *) &nlm_grace_period_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nlm_timeout",
                .data           = &nlm_timeout,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = (unsigned long *) &nlm_timeout_min,
                .extra2         = (unsigned long *) &nlm_timeout_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nlm_udpport",
                .data           = &nlm_udpport,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = (int *) &nlm_port_min,
                .extra2         = (int *) &nlm_port_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nlm_tcpport",
                .data           = &nlm_tcpport,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = (int *) &nlm_port_min,
                .extra2         = (int *) &nlm_port_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nsm_use_hostnames",
                .data           = &nsm_use_hostnames,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nsm_local_state",
                .data           = &nsm_local_state,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table nlm_sysctl_dir[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nfs",
                .mode           = 0555,
                .child          = nlm_sysctls,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table nlm_sysctl_root[] = {
        {
-               .ctl_name       = CTL_FS,
                .procname       = "fs",
                .mode           = 0555,
                .child          = nlm_sysctl_dir,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 #endif /* CONFIG_SYSCTL */
index b62481d..70e1fbb 100644 (file)
@@ -22,63 +22,55 @@ static struct ctl_table_header *nfs_callback_sysctl_table;
 static ctl_table nfs_cb_sysctls[] = {
 #ifdef CONFIG_NFS_V4
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "nfs_callback_tcpport",
                .data = &nfs_callback_set_tcpport,
                .maxlen = sizeof(int),
                .mode = 0644,
-               .proc_handler = &proc_dointvec_minmax,
+               .proc_handler = proc_dointvec_minmax,
                .extra1 = (int *)&nfs_set_port_min,
                .extra2 = (int *)&nfs_set_port_max,
        },
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "idmap_cache_timeout",
                .data = &nfs_idmap_cache_timeout,
                .maxlen = sizeof(int),
                .mode = 0644,
-               .proc_handler = &proc_dointvec_jiffies,
-               .strategy = &sysctl_jiffies,
+               .proc_handler = proc_dointvec_jiffies,
        },
 #endif
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nfs_mountpoint_timeout",
                .data           = &nfs_mountpoint_expiry_timeout,
                .maxlen         = sizeof(nfs_mountpoint_expiry_timeout),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_jiffies,
-               .strategy       = &sysctl_jiffies,
+               .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nfs_congestion_kb",
                .data           = &nfs_congestion_kb,
                .maxlen         = sizeof(nfs_congestion_kb),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table nfs_cb_sysctl_dir[] = {
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "nfs",
                .mode = 0555,
                .child = nfs_cb_sysctls,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table nfs_cb_sysctl_root[] = {
        {
-               .ctl_name = CTL_FS,
                .procname = "fs",
                .mode = 0555,
                .child = nfs_cb_sysctl_dir,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 int nfs_register_sysctl(void)
index dcd2040..1d1d1a2 100644 (file)
@@ -69,36 +69,30 @@ static int zero;
 
 ctl_table inotify_table[] = {
        {
-               .ctl_name       = INOTIFY_MAX_USER_INSTANCES,
                .procname       = "max_user_instances",
                .data           = &inotify_max_user_instances,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
        },
        {
-               .ctl_name       = INOTIFY_MAX_USER_WATCHES,
                .procname       = "max_user_watches",
                .data           = &inotify_max_user_watches,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
        },
        {
-               .ctl_name       = INOTIFY_MAX_QUEUED_EVENTS,
                .procname       = "max_queued_events",
                .data           = &inotify_max_queued_events,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero
        },
-       { .ctl_name = 0 }
+       { }
 };
 #endif /* CONFIG_SYSCTL */
 
index 9ef85e6..79a8918 100644 (file)
 /* Definition of the ntfs sysctl. */
 static ctl_table ntfs_sysctls[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,       /* Binary and text IDs. */
                .procname       = "ntfs-debug",
                .data           = &debug_msgs,          /* Data pointer and size. */
                .maxlen         = sizeof(debug_msgs),
                .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. */
 static ctl_table sysctls_root[] = {
        {
-               .ctl_name       = CTL_FS,
                .procname       = "fs",
                .mode           = 0555,
                .child          = ntfs_sysctls
index 3f2f1c4..f3df0ba 100644 (file)
@@ -620,51 +620,46 @@ error:
 
 static ctl_table ocfs2_nm_table[] = {
        {
-               .ctl_name       = 1,
                .procname       = "hb_ctl_path",
                .data           = ocfs2_hb_ctl_path,
                .maxlen         = OCFS2_MAX_HB_CTL_PATH,
                .mode           = 0644,
-               .proc_handler   = &proc_dostring,
-               .strategy       = &sysctl_string,
+               .proc_handler   = proc_dostring,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table ocfs2_mod_table[] = {
        {
-               .ctl_name       = FS_OCFS2_NM,
                .procname       = "nm",
                .data           = NULL,
                .maxlen         = 0,
                .mode           = 0555,
                .child          = ocfs2_nm_table
        },
-       { .ctl_name = 0}
+       { }
 };
 
 static ctl_table ocfs2_kern_table[] = {
        {
-               .ctl_name       = FS_OCFS2,
                .procname       = "ocfs2",
                .data           = NULL,
                .maxlen         = 0,
                .mode           = 0555,
                .child          = ocfs2_mod_table
        },
-       { .ctl_name = 0}
+       { }
 };
 
 static ctl_table ocfs2_root_table[] = {
        {
-               .ctl_name       = CTL_FS,
                .procname       = "fs",
                .data           = NULL,
                .maxlen         = 0,
                .mode           = 0555,
                .child          = ocfs2_kern_table
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table_header *ocfs2_table_header = NULL;
index f667e8a..6ff9981 100644 (file)
@@ -48,7 +48,7 @@ out:
 static struct ctl_table *find_in_table(struct ctl_table *p, struct qstr *name)
 {
        int len;
-       for ( ; p->ctl_name || p->procname; p++) {
+       for ( ; p->procname; p++) {
 
                if (!p->procname)
                        continue;
@@ -218,7 +218,7 @@ static int scan(struct ctl_table_header *head, ctl_table *table,
                void *dirent, filldir_t filldir)
 {
 
-       for (; table->ctl_name || table->procname; table++, (*pos)++) {
+       for (; table->procname; table++, (*pos)++) {
                int res;
 
                /* Can't do anything without a proc name */
index 9b6ad90..eb5a755 100644 (file)
@@ -2404,100 +2404,89 @@ const struct quotactl_ops vfs_quotactl_ops = {
 
 static ctl_table fs_dqstats_table[] = {
        {
-               .ctl_name       = FS_DQ_LOOKUPS,
                .procname       = "lookups",
                .data           = &dqstats.lookups,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = FS_DQ_DROPS,
                .procname       = "drops",
                .data           = &dqstats.drops,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = FS_DQ_READS,
                .procname       = "reads",
                .data           = &dqstats.reads,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = FS_DQ_WRITES,
                .procname       = "writes",
                .data           = &dqstats.writes,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = FS_DQ_CACHE_HITS,
                .procname       = "cache_hits",
                .data           = &dqstats.cache_hits,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = FS_DQ_ALLOCATED,
                .procname       = "allocated_dquots",
                .data           = &dqstats.allocated_dquots,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = FS_DQ_FREE,
                .procname       = "free_dquots",
                .data           = &dqstats.free_dquots,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = FS_DQ_SYNCS,
                .procname       = "syncs",
                .data           = &dqstats.syncs,
                .maxlen         = sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #ifdef CONFIG_PRINT_QUOTA_WARNING
        {
-               .ctl_name       = FS_DQ_WARNINGS,
                .procname       = "warnings",
                .data           = &flag_print_warnings,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
-       { .ctl_name = 0 },
+       { },
 };
 
 static ctl_table fs_table[] = {
        {
-               .ctl_name       = FS_DQSTATS,
                .procname       = "quota",
                .mode           = 0555,
                .child          = fs_dqstats_table,
        },
-       { .ctl_name = 0 },
+       { },
 };
 
 static ctl_table sys_table[] = {
        {
-               .ctl_name       = CTL_FS,
                .procname       = "fs",
                .mode           = 0555,
                .child          = fs_table,
        },
-       { .ctl_name = 0 },
+       { },
 };
 
 static int __init dquot_init(void)
index c5bc67c..7bb5092 100644 (file)
@@ -55,170 +55,140 @@ xfs_stats_clear_proc_handler(
 
 static ctl_table xfs_table[] = {
        {
-               .ctl_name       = XFS_SGID_INHERIT,
                .procname       = "irix_sgid_inherit",
                .data           = &xfs_params.sgid_inherit.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.sgid_inherit.min,
                .extra2         = &xfs_params.sgid_inherit.max
        },
        {
-               .ctl_name       = XFS_SYMLINK_MODE,
                .procname       = "irix_symlink_mode",
                .data           = &xfs_params.symlink_mode.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.symlink_mode.min,
                .extra2         = &xfs_params.symlink_mode.max
        },
        {
-               .ctl_name       = XFS_PANIC_MASK,
                .procname       = "panic_mask",
                .data           = &xfs_params.panic_mask.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.panic_mask.min,
                .extra2         = &xfs_params.panic_mask.max
        },
 
        {
-               .ctl_name       = XFS_ERRLEVEL,
                .procname       = "error_level",
                .data           = &xfs_params.error_level.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.error_level.min,
                .extra2         = &xfs_params.error_level.max
        },
        {
-               .ctl_name       = XFS_SYNCD_TIMER,
                .procname       = "xfssyncd_centisecs",
                .data           = &xfs_params.syncd_timer.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.syncd_timer.min,
                .extra2         = &xfs_params.syncd_timer.max
        },
        {
-               .ctl_name       = XFS_INHERIT_SYNC,
                .procname       = "inherit_sync",
                .data           = &xfs_params.inherit_sync.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.inherit_sync.min,
                .extra2         = &xfs_params.inherit_sync.max
        },
        {
-               .ctl_name       = XFS_INHERIT_NODUMP,
                .procname       = "inherit_nodump",
                .data           = &xfs_params.inherit_nodump.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.inherit_nodump.min,
                .extra2         = &xfs_params.inherit_nodump.max
        },
        {
-               .ctl_name       = XFS_INHERIT_NOATIME,
                .procname       = "inherit_noatime",
                .data           = &xfs_params.inherit_noatim.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.inherit_noatim.min,
                .extra2         = &xfs_params.inherit_noatim.max
        },
        {
-               .ctl_name       = XFS_BUF_TIMER,
                .procname       = "xfsbufd_centisecs",
                .data           = &xfs_params.xfs_buf_timer.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.xfs_buf_timer.min,
                .extra2         = &xfs_params.xfs_buf_timer.max
        },
        {
-               .ctl_name       = XFS_BUF_AGE,
                .procname       = "age_buffer_centisecs",
                .data           = &xfs_params.xfs_buf_age.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.xfs_buf_age.min,
                .extra2         = &xfs_params.xfs_buf_age.max
        },
        {
-               .ctl_name       = XFS_INHERIT_NOSYM,
                .procname       = "inherit_nosymlinks",
                .data           = &xfs_params.inherit_nosym.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.inherit_nosym.min,
                .extra2         = &xfs_params.inherit_nosym.max
        },
        {
-               .ctl_name       = XFS_ROTORSTEP,
                .procname       = "rotorstep",
                .data           = &xfs_params.rotorstep.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.rotorstep.min,
                .extra2         = &xfs_params.rotorstep.max
        },
        {
-               .ctl_name       = XFS_INHERIT_NODFRG,
                .procname       = "inherit_nodefrag",
                .data           = &xfs_params.inherit_nodfrg.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.inherit_nodfrg.min,
                .extra2         = &xfs_params.inherit_nodfrg.max
        },
        {
-               .ctl_name       = XFS_FILESTREAM_TIMER,
                .procname       = "filestream_centisecs",
                .data           = &xfs_params.fstrm_timer.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xfs_params.fstrm_timer.min,
                .extra2         = &xfs_params.fstrm_timer.max,
        },
        /* please keep this the last entry */
 #ifdef CONFIG_PROC_FS
        {
-               .ctl_name       = XFS_STATS_CLEAR,
                .procname       = "stats_clear",
                .data           = &xfs_params.stats_clear.val,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &xfs_stats_clear_proc_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = xfs_stats_clear_proc_handler,
                .extra1         = &xfs_params.stats_clear.min,
                .extra2         = &xfs_params.stats_clear.max
        },
@@ -229,7 +199,6 @@ static ctl_table xfs_table[] = {
 
 static ctl_table xfs_dir_table[] = {
        {
-               .ctl_name       = FS_XFS,
                .procname       = "xfs",
                .mode           = 0555,
                .child          = xfs_table
@@ -239,7 +208,6 @@ static ctl_table xfs_dir_table[] = {
 
 static ctl_table xfs_root_table[] = {
        {
-               .ctl_name       = CTL_FS,
                .procname       = "fs",
                .mode           = 0555,
                .child          = xfs_dir_table
index 1e4743e..c83a86a 100644 (file)
@@ -15,9 +15,6 @@
  **  The kernel will then return -ENOTDIR to any application using
  **  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: */
 
-/* For internal pattern-matching use only: */
-#ifdef __KERNEL__
-#define CTL_NONE       0
-#define CTL_UNNUMBERED CTL_NONE        /* sysctl without a binary number */
-#endif
-
 enum
 {
        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 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,
                          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,
                                      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
- * with an initialised array of struct ctl_table's.  An entry with zero
- * ctl_name and NULL procname terminates the table.  table->de will be
+ * with an initialised array of struct ctl_table's.  An entry with 
+ * NULL procname terminates the table.  table->de will be
  * set up by the registration and need not be initialised in advance.
  *
  * 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
  * 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
  * the sysctl table.  The data and maxlen fields of the ctl_table
  * struct enable minimal validation of the values being written to be
  * 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
  * mirrored under /proc/sys (non-terminals are handled by a built-in
  * 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: */
 struct ctl_table 
 {
-       int ctl_name;                   /* Binary ID */
        const char *procname;           /* Text ID for /proc/sys, or zero */
        void *data;
        int maxlen;
@@ -1058,7 +1020,6 @@ struct ctl_table
        struct ctl_table *child;
        struct ctl_table *parent;       /* Automatically set */
        proc_handler *proc_handler;     /* Callback for text formatting */
-       ctl_handler *strategy;          /* Callback function for all r/w */
        void *extra1;
        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 {
        const char *procname;
-       int ctl_name;
 };
 
 void register_sysctl_root(struct ctl_table_root *root);
index cee4682..3f781a4 100644 (file)
@@ -75,7 +75,6 @@ struct dn_dev_parms {
        unsigned long t3;         /* Default value of t3                */
        int priority;             /* Priority to be a router            */
        char *name;               /* Name for sysctl                    */
-       int ctl_name;             /* Index for sysctl                   */
        int  (*up)(struct net_device *);
        void (*down)(struct net_device *);
        void (*timer3)(struct net_device *, struct dn_ifaddr *ifa);
index 3817fda..da99fdd 100644 (file)
@@ -264,8 +264,7 @@ extern int                  neigh_sysctl_register(struct net_device *dev,
                                                      struct neigh_parms *p,
                                                      int p_id, int pdev_id,
                                                      char *p_name,
-                                                     proc_handler *proc_handler,
-                                                     ctl_handler *strategy);
+                                                     proc_handler *proc_handler);
 extern void                    neigh_sysctl_unregister(struct neigh_parms *p);
 
 static inline void __neigh_parms_put(struct neigh_parms *parms)
index 9ee7782..3889924 100644 (file)
@@ -763,6 +763,7 @@ config UID16
 
 config SYSCTL_SYSCALL
        bool "Sysctl syscall support" if EMBEDDED
+       depends on PROC_SYSCTL
        default y
        select SYSCTL
        ---help---
index 7d37047..56410fa 100644 (file)
@@ -129,136 +129,60 @@ static int proc_ipcauto_dointvec_minmax(ctl_table *table, int write,
 #define proc_ipcauto_dointvec_minmax NULL
 #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 one = 1;
 
 static struct ctl_table ipc_kern_table[] = {
        {
-               .ctl_name       = KERN_SHMMAX,
                .procname       = "shmmax",
                .data           = &init_ipc_ns.shm_ctlmax,
                .maxlen         = sizeof (init_ipc_ns.shm_ctlmax),
                .mode           = 0644,
                .proc_handler   = proc_ipc_doulongvec_minmax,
-               .strategy       = sysctl_ipc_data,
        },
        {
-               .ctl_name       = KERN_SHMALL,
                .procname       = "shmall",
                .data           = &init_ipc_ns.shm_ctlall,
                .maxlen         = sizeof (init_ipc_ns.shm_ctlall),
                .mode           = 0644,
                .proc_handler   = proc_ipc_doulongvec_minmax,
-               .strategy       = sysctl_ipc_data,
        },
        {
-               .ctl_name       = KERN_SHMMNI,
                .procname       = "shmmni",
                .data           = &init_ipc_ns.shm_ctlmni,
                .maxlen         = sizeof (init_ipc_ns.shm_ctlmni),
                .mode           = 0644,
                .proc_handler   = proc_ipc_dointvec,
-               .strategy       = sysctl_ipc_data,
        },
        {
-               .ctl_name       = KERN_MSGMAX,
                .procname       = "msgmax",
                .data           = &init_ipc_ns.msg_ctlmax,
                .maxlen         = sizeof (init_ipc_ns.msg_ctlmax),
                .mode           = 0644,
                .proc_handler   = proc_ipc_dointvec,
-               .strategy       = sysctl_ipc_data,
        },
        {
-               .ctl_name       = KERN_MSGMNI,
                .procname       = "msgmni",
                .data           = &init_ipc_ns.msg_ctlmni,
                .maxlen         = sizeof (init_ipc_ns.msg_ctlmni),
                .mode           = 0644,
                .proc_handler   = proc_ipc_callback_dointvec,
-               .strategy       = sysctl_ipc_registered_data,
        },
        {
-               .ctl_name       = KERN_MSGMNB,
                .procname       =  "msgmnb",
                .data           = &init_ipc_ns.msg_ctlmnb,
                .maxlen         = sizeof (init_ipc_ns.msg_ctlmnb),
                .mode           = 0644,
                .proc_handler   = proc_ipc_dointvec,
-               .strategy       = sysctl_ipc_data,
        },
        {
-               .ctl_name       = KERN_SEM,
                .procname       = "sem",
                .data           = &init_ipc_ns.sem_ctls,
                .maxlen         = 4*sizeof (int),
                .mode           = 0644,
                .proc_handler   = proc_ipc_dointvec,
-               .strategy       = sysctl_ipc_data,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "auto_msgmni",
                .data           = &init_ipc_ns.auto_msgmni,
                .maxlen         = sizeof(int),
@@ -272,7 +196,6 @@ static struct ctl_table ipc_kern_table[] = {
 
 static struct ctl_table ipc_root_table[] = {
        {
-               .ctl_name       = CTL_KERN,
                .procname       = "kernel",
                .mode           = 0555,
                .child          = ipc_kern_table,
index 8a05871..0c09366 100644 (file)
@@ -88,7 +88,7 @@ static ctl_table mq_sysctls[] = {
                .extra1         = &msg_maxsize_limit_min,
                .extra2         = &msg_maxsize_limit_max,
        },
-       { .ctl_name = 0 }
+       {}
 };
 
 static ctl_table mq_sysctl_dir[] = {
@@ -97,17 +97,16 @@ static ctl_table mq_sysctl_dir[] = {
                .mode           = 0555,
                .child          = mq_sysctls,
        },
-       { .ctl_name = 0 }
+       {}
 };
 
 static ctl_table mq_sysctl_root[] = {
        {
-               .ctl_name       = CTL_FS,
                .procname       = "fs",
                .mode           = 0555,
                .child          = mq_sysctl_dir,
        },
-       { .ctl_name = 0 }
+       {}
 };
 
 struct ctl_table_header *mq_register_sysctl_table(void)
index 982c50e..9943202 100644 (file)
@@ -4,7 +4,7 @@
 
 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 \
-           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 \
            rcupdate.o extable.o params.o posix-timers.o \
            kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
index aa31244..e7f2cfa 100644 (file)
@@ -7444,17 +7444,16 @@ static struct ctl_table sd_ctl_dir[] = {
                .procname       = "sched_domain",
                .mode           = 0555,
        },
-       {0, },
+       {}
 };
 
 static struct ctl_table sd_ctl_root[] = {
        {
-               .ctl_name       = CTL_KERN,
                .procname       = "kernel",
                .mode           = 0555,
                .child          = sd_ctl_dir,
        },
-       {0, },
+       {}
 };
 
 static struct ctl_table *sd_alloc_ctl_entry(int n)
index 00889bd..7494bbf 100644 (file)
@@ -49,7 +49,6 @@ static const int slow_work_max_vslow = 99;
 
 ctl_table slow_work_sysctls[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "min-threads",
                .data           = &slow_work_min_threads,
                .maxlen         = sizeof(unsigned),
@@ -59,7 +58,6 @@ ctl_table slow_work_sysctls[] = {
                .extra2         = &slow_work_max_threads,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max-threads",
                .data           = &slow_work_max_threads,
                .maxlen         = sizeof(unsigned),
@@ -69,16 +67,15 @@ ctl_table slow_work_sysctls[] = {
                .extra2         = (void *) &slow_work_max_max_threads,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "vslow-percentage",
                .data           = &vslow_work_proportion,
                .maxlen         = sizeof(unsigned),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = (void *) &slow_work_min_vslow,
                .extra2         = (void *) &slow_work_max_vslow,
        },
-       { .ctl_name = 0 }
+       {}
 };
 #endif
 
index e06d0b8..de5bf14 100644 (file)
@@ -139,7 +139,6 @@ cond_syscall(sys_pciconfig_read);
 cond_syscall(sys_pciconfig_write);
 cond_syscall(sys_pciconfig_iobase);
 cond_syscall(sys32_ipc);
-cond_syscall(sys32_sysctl);
 cond_syscall(ppc_rtas);
 cond_syscall(sys_spu_run);
 cond_syscall(sys_spu_create);
index 4dbf93a..9327a26 100644 (file)
@@ -27,7 +27,6 @@
 #include <linux/security.h>
 #include <linux/ctype.h>
 #include <linux/kmemcheck.h>
-#include <linux/smp_lock.h>
 #include <linux/fs.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
@@ -61,7 +60,6 @@
 #include <asm/io.h>
 #endif
 
-static int deprecated_sysctl_warning(struct __sysctl_args *args);
 
 #if defined(CONFIG_SYSCTL)
 
@@ -210,31 +208,26 @@ extern int lock_stat;
 
 static struct ctl_table root_table[] = {
        {
-               .ctl_name       = CTL_KERN,
                .procname       = "kernel",
                .mode           = 0555,
                .child          = kern_table,
        },
        {
-               .ctl_name       = CTL_VM,
                .procname       = "vm",
                .mode           = 0555,
                .child          = vm_table,
        },
        {
-               .ctl_name       = CTL_FS,
                .procname       = "fs",
                .mode           = 0555,
                .child          = fs_table,
        },
        {
-               .ctl_name       = CTL_DEBUG,
                .procname       = "debug",
                .mode           = 0555,
                .child          = debug_table,
        },
        {
-               .ctl_name       = CTL_DEV,
                .procname       = "dev",
                .mode           = 0555,
                .child          = dev_table,
@@ -243,7 +236,7 @@ static struct ctl_table root_table[] = {
  * NOTE: do not add new entries to this table unless you have read
  * Documentation/sysctl/ctl_unnumbered.txt
  */
-       { .ctl_name = 0 }
+       { }
 };
 
 #ifdef CONFIG_SCHED_DEBUG
@@ -255,192 +248,166 @@ static int max_wakeup_granularity_ns = NSEC_PER_SEC;    /* 1 second */
 
 static struct ctl_table kern_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_child_runs_first",
                .data           = &sysctl_sched_child_runs_first,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #ifdef CONFIG_SCHED_DEBUG
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_min_granularity_ns",
                .data           = &sysctl_sched_min_granularity,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &sched_nr_latency_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = sched_nr_latency_handler,
                .extra1         = &min_sched_granularity_ns,
                .extra2         = &max_sched_granularity_ns,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_latency_ns",
                .data           = &sysctl_sched_latency,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &sched_nr_latency_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = sched_nr_latency_handler,
                .extra1         = &min_sched_granularity_ns,
                .extra2         = &max_sched_granularity_ns,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_wakeup_granularity_ns",
                .data           = &sysctl_sched_wakeup_granularity,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_wakeup_granularity_ns,
                .extra2         = &max_wakeup_granularity_ns,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_shares_ratelimit",
                .data           = &sysctl_sched_shares_ratelimit,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_shares_thresh",
                .data           = &sysctl_sched_shares_thresh,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_features",
                .data           = &sysctl_sched_features,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_migration_cost",
                .data           = &sysctl_sched_migration_cost,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_nr_migrate",
                .data           = &sysctl_sched_nr_migrate,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_time_avg",
                .data           = &sysctl_sched_time_avg,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "timer_migration",
                .data           = &sysctl_timer_migration,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &one,
        },
 #endif
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_rt_period_us",
                .data           = &sysctl_sched_rt_period,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &sched_rt_handler,
+               .proc_handler   = sched_rt_handler,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_rt_runtime_us",
                .data           = &sysctl_sched_rt_runtime,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &sched_rt_handler,
+               .proc_handler   = sched_rt_handler,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sched_compat_yield",
                .data           = &sysctl_sched_compat_yield,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #ifdef CONFIG_PROVE_LOCKING
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "prove_locking",
                .data           = &prove_locking,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_LOCK_STAT
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "lock_stat",
                .data           = &lock_stat,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
        {
-               .ctl_name       = KERN_PANIC,
                .procname       = "panic",
                .data           = &panic_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = KERN_CORE_USES_PID,
                .procname       = "core_uses_pid",
                .data           = &core_uses_pid,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = KERN_CORE_PATTERN,
                .procname       = "core_pattern",
                .data           = core_pattern,
                .maxlen         = CORENAME_MAX_SIZE,
                .mode           = 0644,
-               .proc_handler   = &proc_dostring,
-               .strategy       = &sysctl_string,
+               .proc_handler   = proc_dostring,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "core_pipe_limit",
                .data           = &core_pipe_limit,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #ifdef CONFIG_PROC_SYSCTL
        {
                .procname       = "tainted",
                .maxlen         = sizeof(long),
                .mode           = 0644,
-               .proc_handler   = &proc_taint,
+               .proc_handler   = proc_taint,
        },
 #endif
 #ifdef CONFIG_LATENCYTOP
@@ -449,181 +416,160 @@ static struct ctl_table kern_table[] = {
                .data           = &latencytop_enabled,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_BLK_DEV_INITRD
        {
-               .ctl_name       = KERN_REALROOTDEV,
                .procname       = "real-root-dev",
                .data           = &real_root_dev,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "print-fatal-signals",
                .data           = &print_fatal_signals,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #ifdef CONFIG_SPARC
        {
-               .ctl_name       = KERN_SPARC_REBOOT,
                .procname       = "reboot-cmd",
                .data           = reboot_command,
                .maxlen         = 256,
                .mode           = 0644,
-               .proc_handler   = &proc_dostring,
-               .strategy       = &sysctl_string,
+               .proc_handler   = proc_dostring,
        },
        {
-               .ctl_name       = KERN_SPARC_STOP_A,
                .procname       = "stop-a",
                .data           = &stop_a_enabled,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = KERN_SPARC_SCONS_PWROFF,
                .procname       = "scons-poweroff",
                .data           = &scons_pwroff,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_SPARC64
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "tsb-ratio",
                .data           = &sysctl_tsb_ratio,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef __hppa__
        {
-               .ctl_name       = KERN_HPPA_PWRSW,
                .procname       = "soft-power",
                .data           = &pwrsw_enabled,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = KERN_HPPA_UNALIGNED,
                .procname       = "unaligned-trap",
                .data           = &unaligned_enabled,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
        {
-               .ctl_name       = KERN_CTLALTDEL,
                .procname       = "ctrl-alt-del",
                .data           = &C_A_D,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #ifdef CONFIG_FUNCTION_TRACER
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "ftrace_enabled",
                .data           = &ftrace_enabled,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &ftrace_enable_sysctl,
+               .proc_handler   = ftrace_enable_sysctl,
        },
 #endif
 #ifdef CONFIG_STACK_TRACER
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "stack_tracer_enabled",
                .data           = &stack_tracer_enabled,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &stack_trace_sysctl,
+               .proc_handler   = stack_trace_sysctl,
        },
 #endif
 #ifdef CONFIG_TRACING
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "ftrace_dump_on_oops",
                .data           = &ftrace_dump_on_oops,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_MODULES
        {
-               .ctl_name       = KERN_MODPROBE,
                .procname       = "modprobe",
                .data           = &modprobe_path,
                .maxlen         = KMOD_PATH_LEN,
                .mode           = 0644,
-               .proc_handler   = &proc_dostring,
-               .strategy       = &sysctl_string,
+               .proc_handler   = proc_dostring,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "modules_disabled",
                .data           = &modules_disabled,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                /* only handle a transition from default "0" to "1" */
-               .proc_handler   = &proc_dointvec_minmax,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &one,
                .extra2         = &one,
        },
 #endif
 #if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
        {
-               .ctl_name       = KERN_HOTPLUG,
                .procname       = "hotplug",
                .data           = &uevent_helper,
                .maxlen         = UEVENT_HELPER_PATH_LEN,
                .mode           = 0644,
-               .proc_handler   = &proc_dostring,
-               .strategy       = &sysctl_string,
+               .proc_handler   = proc_dostring,
        },
 #endif
 #ifdef CONFIG_CHR_DEV_SG
        {
-               .ctl_name       = KERN_SG_BIG_BUFF,
                .procname       = "sg-big-buff",
                .data           = &sg_big_buff,
                .maxlen         = sizeof (int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_BSD_PROCESS_ACCT
        {
-               .ctl_name       = KERN_ACCT,
                .procname       = "acct",
                .data           = &acct_parm,
                .maxlen         = 3*sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_MAGIC_SYSRQ
        {
-               .ctl_name       = KERN_SYSRQ,
                .procname       = "sysrq",
                .data           = &__sysrq_enabled,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_PROC_SYSCTL
@@ -632,215 +578,188 @@ static struct ctl_table kern_table[] = {
                .data           = NULL,
                .maxlen         = sizeof (int),
                .mode           = 0600,
-               .proc_handler   = &proc_do_cad_pid,
+               .proc_handler   = proc_do_cad_pid,
        },
 #endif
        {
-               .ctl_name       = KERN_MAX_THREADS,
                .procname       = "threads-max",
                .data           = &max_threads,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = KERN_RANDOM,
                .procname       = "random",
                .mode           = 0555,
                .child          = random_table,
        },
        {
-               .ctl_name       = KERN_OVERFLOWUID,
                .procname       = "overflowuid",
                .data           = &overflowuid,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &minolduid,
                .extra2         = &maxolduid,
        },
        {
-               .ctl_name       = KERN_OVERFLOWGID,
                .procname       = "overflowgid",
                .data           = &overflowgid,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &minolduid,
                .extra2         = &maxolduid,
        },
 #ifdef CONFIG_S390
 #ifdef CONFIG_MATHEMU
        {
-               .ctl_name       = KERN_IEEE_EMULATION_WARNINGS,
                .procname       = "ieee_emulation_warnings",
                .data           = &sysctl_ieee_emulation_warnings,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
        {
-               .ctl_name       = KERN_S390_USER_DEBUG_LOGGING,
                .procname       = "userprocess_debug",
                .data           = &sysctl_userprocess_debug,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
        {
-               .ctl_name       = KERN_PIDMAX,
                .procname       = "pid_max",
                .data           = &pid_max,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &pid_max_min,
                .extra2         = &pid_max_max,
        },
        {
-               .ctl_name       = KERN_PANIC_ON_OOPS,
                .procname       = "panic_on_oops",
                .data           = &panic_on_oops,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #if defined CONFIG_PRINTK
        {
-               .ctl_name       = KERN_PRINTK,
                .procname       = "printk",
                .data           = &console_loglevel,
                .maxlen         = 4*sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = KERN_PRINTK_RATELIMIT,
                .procname       = "printk_ratelimit",
                .data           = &printk_ratelimit_state.interval,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_jiffies,
-               .strategy       = &sysctl_jiffies,
+               .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = KERN_PRINTK_RATELIMIT_BURST,
                .procname       = "printk_ratelimit_burst",
                .data           = &printk_ratelimit_state.burst,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "printk_delay",
                .data           = &printk_delay_msec,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &ten_thousand,
        },
 #endif
        {
-               .ctl_name       = KERN_NGROUPS_MAX,
                .procname       = "ngroups_max",
                .data           = &ngroups_max,
                .maxlen         = sizeof (int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86)
        {
-               .ctl_name       = KERN_UNKNOWN_NMI_PANIC,
                .procname       = "unknown_nmi_panic",
                .data           = &unknown_nmi_panic,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
                .procname       = "nmi_watchdog",
                .data           = &nmi_watchdog_enabled,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_nmi_enabled,
+               .proc_handler   = proc_nmi_enabled,
        },
 #endif
 #if defined(CONFIG_X86)
        {
-               .ctl_name       = KERN_PANIC_ON_NMI,
                .procname       = "panic_on_unrecovered_nmi",
                .data           = &panic_on_unrecovered_nmi,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "panic_on_io_nmi",
                .data           = &panic_on_io_nmi,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = KERN_BOOTLOADER_TYPE,
                .procname       = "bootloader_type",
                .data           = &bootloader_type,
                .maxlen         = sizeof (int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "bootloader_version",
                .data           = &bootloader_version,
                .maxlen         = sizeof (int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "kstack_depth_to_print",
                .data           = &kstack_depth_to_print,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "io_delay_type",
                .data           = &io_delay_type,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #if defined(CONFIG_MMU)
        {
-               .ctl_name       = KERN_RANDOMIZE,
                .procname       = "randomize_va_space",
                .data           = &randomize_va_space,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #if defined(CONFIG_S390) && defined(CONFIG_SMP)
        {
-               .ctl_name       = KERN_SPIN_RETRY,
                .procname       = "spin_retry",
                .data           = &spin_retry,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #if    defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)
@@ -849,123 +768,104 @@ static struct ctl_table kern_table[] = {
                .data           = &acpi_realmode_flags,
                .maxlen         = sizeof (unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
        },
 #endif
 #ifdef CONFIG_IA64
        {
-               .ctl_name       = KERN_IA64_UNALIGNED,
                .procname       = "ignore-unaligned-usertrap",
                .data           = &no_unaligned_warning,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "unaligned-dump-stack",
                .data           = &unaligned_dump_stack,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_DETECT_SOFTLOCKUP
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "softlockup_panic",
                .data           = &softlockup_panic,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &one,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "softlockup_thresh",
                .data           = &softlockup_thresh,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dosoftlockup_thresh,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dosoftlockup_thresh,
                .extra1         = &neg_one,
                .extra2         = &sixty,
        },
 #endif
 #ifdef CONFIG_DETECT_HUNG_TASK
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "hung_task_panic",
                .data           = &sysctl_hung_task_panic,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &one,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "hung_task_check_count",
                .data           = &sysctl_hung_task_check_count,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_doulongvec_minmax,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "hung_task_timeout_secs",
                .data           = &sysctl_hung_task_timeout_secs,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_dohung_task_timeout_secs,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dohung_task_timeout_secs,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "hung_task_warnings",
                .data           = &sysctl_hung_task_warnings,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_doulongvec_minmax,
        },
 #endif
 #ifdef CONFIG_COMPAT
        {
-               .ctl_name       = KERN_COMPAT_LOG,
                .procname       = "compat-log",
                .data           = &compat_log,
                .maxlen         = sizeof (int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_RT_MUTEXES
        {
-               .ctl_name       = KERN_MAX_LOCK_DEPTH,
                .procname       = "max_lock_depth",
                .data           = &max_lock_depth,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "poweroff_cmd",
                .data           = &poweroff_cmd,
                .maxlen         = POWEROFF_CMD_PATH_LEN,
                .mode           = 0644,
-               .proc_handler   = &proc_dostring,
-               .strategy       = &sysctl_string,
+               .proc_handler   = proc_dostring,
        },
 #ifdef CONFIG_KEYS
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "keys",
                .mode           = 0555,
                .child          = key_sysctls,
@@ -973,17 +873,15 @@ static struct ctl_table kern_table[] = {
 #endif
 #ifdef CONFIG_RCU_TORTURE_TEST
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rcutorture_runnable",
                .data           = &rcutorture_runnable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_SLOW_WORK
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "slow-work",
                .mode           = 0555,
                .child          = slow_work_sysctls,
@@ -991,146 +889,127 @@ static struct ctl_table kern_table[] = {
 #endif
 #ifdef CONFIG_PERF_EVENTS
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "perf_event_paranoid",
                .data           = &sysctl_perf_event_paranoid,
                .maxlen         = sizeof(sysctl_perf_event_paranoid),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "perf_event_mlock_kb",
                .data           = &sysctl_perf_event_mlock,
                .maxlen         = sizeof(sysctl_perf_event_mlock),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "perf_event_max_sample_rate",
                .data           = &sysctl_perf_event_sample_rate,
                .maxlen         = sizeof(sysctl_perf_event_sample_rate),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_KMEMCHECK
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "kmemcheck",
                .data           = &kmemcheck_enabled,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_BLOCK
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "blk_iopoll",
                .data           = &blk_iopoll_enabled,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 /*
  * NOTE: do not add new entries to this table unless you have read
  * Documentation/sysctl/ctl_unnumbered.txt
  */
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table vm_table[] = {
        {
-               .ctl_name       = VM_OVERCOMMIT_MEMORY,
                .procname       = "overcommit_memory",
                .data           = &sysctl_overcommit_memory,
                .maxlen         = sizeof(sysctl_overcommit_memory),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = VM_PANIC_ON_OOM,
                .procname       = "panic_on_oom",
                .data           = &sysctl_panic_on_oom,
                .maxlen         = sizeof(sysctl_panic_on_oom),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "oom_kill_allocating_task",
                .data           = &sysctl_oom_kill_allocating_task,
                .maxlen         = sizeof(sysctl_oom_kill_allocating_task),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "oom_dump_tasks",
                .data           = &sysctl_oom_dump_tasks,
                .maxlen         = sizeof(sysctl_oom_dump_tasks),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = VM_OVERCOMMIT_RATIO,
                .procname       = "overcommit_ratio",
                .data           = &sysctl_overcommit_ratio,
                .maxlen         = sizeof(sysctl_overcommit_ratio),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = VM_PAGE_CLUSTER,
                .procname       = "page-cluster", 
                .data           = &page_cluster,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = VM_DIRTY_BACKGROUND,
                .procname       = "dirty_background_ratio",
                .data           = &dirty_background_ratio,
                .maxlen         = sizeof(dirty_background_ratio),
                .mode           = 0644,
-               .proc_handler   = &dirty_background_ratio_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = dirty_background_ratio_handler,
                .extra1         = &zero,
                .extra2         = &one_hundred,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "dirty_background_bytes",
                .data           = &dirty_background_bytes,
                .maxlen         = sizeof(dirty_background_bytes),
                .mode           = 0644,
-               .proc_handler   = &dirty_background_bytes_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = dirty_background_bytes_handler,
                .extra1         = &one_ul,
        },
        {
-               .ctl_name       = VM_DIRTY_RATIO,
                .procname       = "dirty_ratio",
                .data           = &vm_dirty_ratio,
                .maxlen         = sizeof(vm_dirty_ratio),
                .mode           = 0644,
-               .proc_handler   = &dirty_ratio_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = dirty_ratio_handler,
                .extra1         = &zero,
                .extra2         = &one_hundred,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "dirty_bytes",
                .data           = &vm_dirty_bytes,
                .maxlen         = sizeof(vm_dirty_bytes),
                .mode           = 0644,
-               .proc_handler   = &dirty_bytes_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = dirty_bytes_handler,
                .extra1         = &dirty_bytes_min,
        },
        {
@@ -1138,31 +1017,28 @@ static struct ctl_table vm_table[] = {
                .data           = &dirty_writeback_interval,
                .maxlen         = sizeof(dirty_writeback_interval),
                .mode           = 0644,
-               .proc_handler   = &dirty_writeback_centisecs_handler,
+               .proc_handler   = dirty_writeback_centisecs_handler,
        },
        {
                .procname       = "dirty_expire_centisecs",
                .data           = &dirty_expire_interval,
                .maxlen         = sizeof(dirty_expire_interval),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = VM_NR_PDFLUSH_THREADS,
                .procname       = "nr_pdflush_threads",
                .data           = &nr_pdflush_threads,
                .maxlen         = sizeof nr_pdflush_threads,
                .mode           = 0444 /* read-only*/,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = VM_SWAPPINESS,
                .procname       = "swappiness",
                .data           = &vm_swappiness,
                .maxlen         = sizeof(vm_swappiness),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &one_hundred,
        },
@@ -1172,255 +1048,213 @@ static struct ctl_table vm_table[] = {
                .data           = NULL,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &hugetlb_sysctl_handler,
+               .proc_handler   = hugetlb_sysctl_handler,
                .extra1         = (void *)&hugetlb_zero,
                .extra2         = (void *)&hugetlb_infinity,
         },
         {
-               .ctl_name       = VM_HUGETLB_GROUP,
                .procname       = "hugetlb_shm_group",
                .data           = &sysctl_hugetlb_shm_group,
                .maxlen         = sizeof(gid_t),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
         },
         {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "hugepages_treat_as_movable",
                .data           = &hugepages_treat_as_movable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &hugetlb_treat_movable_handler,
+               .proc_handler   = hugetlb_treat_movable_handler,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nr_overcommit_hugepages",
                .data           = NULL,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &hugetlb_overcommit_handler,
+               .proc_handler   = hugetlb_overcommit_handler,
                .extra1         = (void *)&hugetlb_zero,
                .extra2         = (void *)&hugetlb_infinity,
        },
 #endif
        {
-               .ctl_name       = VM_LOWMEM_RESERVE_RATIO,
                .procname       = "lowmem_reserve_ratio",
                .data           = &sysctl_lowmem_reserve_ratio,
                .maxlen         = sizeof(sysctl_lowmem_reserve_ratio),
                .mode           = 0644,
-               .proc_handler   = &lowmem_reserve_ratio_sysctl_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = lowmem_reserve_ratio_sysctl_handler,
        },
        {
-               .ctl_name       = VM_DROP_PAGECACHE,
                .procname       = "drop_caches",
                .data           = &sysctl_drop_caches,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = drop_caches_sysctl_handler,
-               .strategy       = &sysctl_intvec,
        },
        {
-               .ctl_name       = VM_MIN_FREE_KBYTES,
                .procname       = "min_free_kbytes",
                .data           = &min_free_kbytes,
                .maxlen         = sizeof(min_free_kbytes),
                .mode           = 0644,
-               .proc_handler   = &min_free_kbytes_sysctl_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = min_free_kbytes_sysctl_handler,
                .extra1         = &zero,
        },
        {
-               .ctl_name       = VM_PERCPU_PAGELIST_FRACTION,
                .procname       = "percpu_pagelist_fraction",
                .data           = &percpu_pagelist_fraction,
                .maxlen         = sizeof(percpu_pagelist_fraction),
                .mode           = 0644,
-               .proc_handler   = &percpu_pagelist_fraction_sysctl_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = percpu_pagelist_fraction_sysctl_handler,
                .extra1         = &min_percpu_pagelist_fract,
        },
 #ifdef CONFIG_MMU
        {
-               .ctl_name       = VM_MAX_MAP_COUNT,
                .procname       = "max_map_count",
                .data           = &sysctl_max_map_count,
                .maxlen         = sizeof(sysctl_max_map_count),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec
+               .proc_handler   = proc_dointvec
        },
 #else
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nr_trim_pages",
                .data           = &sysctl_nr_trim_pages,
                .maxlen         = sizeof(sysctl_nr_trim_pages),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
        },
 #endif
        {
-               .ctl_name       = VM_LAPTOP_MODE,
                .procname       = "laptop_mode",
                .data           = &laptop_mode,
                .maxlen         = sizeof(laptop_mode),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_jiffies,
-               .strategy       = &sysctl_jiffies,
+               .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = VM_BLOCK_DUMP,
                .procname       = "block_dump",
                .data           = &block_dump,
                .maxlen         = sizeof(block_dump),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec,
                .extra1         = &zero,
        },
        {
-               .ctl_name       = VM_VFS_CACHE_PRESSURE,
                .procname       = "vfs_cache_pressure",
                .data           = &sysctl_vfs_cache_pressure,
                .maxlen         = sizeof(sysctl_vfs_cache_pressure),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec,
                .extra1         = &zero,
        },
 #ifdef HAVE_ARCH_PICK_MMAP_LAYOUT
        {
-               .ctl_name       = VM_LEGACY_VA_LAYOUT,
                .procname       = "legacy_va_layout",
                .data           = &sysctl_legacy_va_layout,
                .maxlen         = sizeof(sysctl_legacy_va_layout),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec,
                .extra1         = &zero,
        },
 #endif
 #ifdef CONFIG_NUMA
        {
-               .ctl_name       = VM_ZONE_RECLAIM_MODE,
                .procname       = "zone_reclaim_mode",
                .data           = &zone_reclaim_mode,
                .maxlen         = sizeof(zone_reclaim_mode),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec,
                .extra1         = &zero,
        },
        {
-               .ctl_name       = VM_MIN_UNMAPPED,
                .procname       = "min_unmapped_ratio",
                .data           = &sysctl_min_unmapped_ratio,
                .maxlen         = sizeof(sysctl_min_unmapped_ratio),
                .mode           = 0644,
-               .proc_handler   = &sysctl_min_unmapped_ratio_sysctl_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = sysctl_min_unmapped_ratio_sysctl_handler,
                .extra1         = &zero,
                .extra2         = &one_hundred,
        },
        {
-               .ctl_name       = VM_MIN_SLAB,
                .procname       = "min_slab_ratio",
                .data           = &sysctl_min_slab_ratio,
                .maxlen         = sizeof(sysctl_min_slab_ratio),
                .mode           = 0644,
-               .proc_handler   = &sysctl_min_slab_ratio_sysctl_handler,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = sysctl_min_slab_ratio_sysctl_handler,
                .extra1         = &zero,
                .extra2         = &one_hundred,
        },
 #endif
 #ifdef CONFIG_SMP
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "stat_interval",
                .data           = &sysctl_stat_interval,
                .maxlen         = sizeof(sysctl_stat_interval),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_jiffies,
-               .strategy       = &sysctl_jiffies,
+               .proc_handler   = proc_dointvec_jiffies,
        },
 #endif
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "mmap_min_addr",
                .data           = &dac_mmap_min_addr,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &mmap_min_addr_handler,
+               .proc_handler   = mmap_min_addr_handler,
        },
 #ifdef CONFIG_NUMA
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "numa_zonelist_order",
                .data           = &numa_zonelist_order,
                .maxlen         = NUMA_ZONELIST_ORDER_LEN,
                .mode           = 0644,
-               .proc_handler   = &numa_zonelist_order_handler,
-               .strategy       = &sysctl_string,
+               .proc_handler   = numa_zonelist_order_handler,
        },
 #endif
 #if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \
    (defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL))
        {
-               .ctl_name       = VM_VDSO_ENABLED,
                .procname       = "vdso_enabled",
                .data           = &vdso_enabled,
                .maxlen         = sizeof(vdso_enabled),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec,
                .extra1         = &zero,
        },
 #endif
 #ifdef CONFIG_HIGHMEM
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "highmem_is_dirtyable",
                .data           = &vm_highmem_is_dirtyable,
                .maxlen         = sizeof(vm_highmem_is_dirtyable),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &one,
        },
 #endif
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "scan_unevictable_pages",
                .data           = &scan_unevictable_pages,
                .maxlen         = sizeof(scan_unevictable_pages),
                .mode           = 0644,
-               .proc_handler   = &scan_unevictable_handler,
+               .proc_handler   = scan_unevictable_handler,
        },
 #ifdef CONFIG_MEMORY_FAILURE
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "memory_failure_early_kill",
                .data           = &sysctl_memory_failure_early_kill,
                .maxlen         = sizeof(sysctl_memory_failure_early_kill),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &one,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "memory_failure_recovery",
                .data           = &sysctl_memory_failure_recovery,
                .maxlen         = sizeof(sysctl_memory_failure_recovery),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &one,
        },
@@ -1430,116 +1264,104 @@ static struct ctl_table vm_table[] = {
  * NOTE: do not add new entries to this table unless you have read
  * Documentation/sysctl/ctl_unnumbered.txt
  */
-       { .ctl_name = 0 }
+       { }
 };
 
 #if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE)
 static struct ctl_table binfmt_misc_table[] = {
-       { .ctl_name = 0 }
+       { }
 };
 #endif
 
 static struct ctl_table fs_table[] = {
        {
-               .ctl_name       = FS_NRINODE,
                .procname       = "inode-nr",
                .data           = &inodes_stat,
                .maxlen         = 2*sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = FS_STATINODE,
                .procname       = "inode-state",
                .data           = &inodes_stat,
                .maxlen         = 7*sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
                .procname       = "file-nr",
                .data           = &files_stat,
                .maxlen         = 3*sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_nr_files,
+               .proc_handler   = proc_nr_files,
        },
        {
-               .ctl_name       = FS_MAXFILE,
                .procname       = "file-max",
                .data           = &files_stat.max_files,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nr_open",
                .data           = &sysctl_nr_open,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &sysctl_nr_open_min,
                .extra2         = &sysctl_nr_open_max,
        },
        {
-               .ctl_name       = FS_DENTRY,
                .procname       = "dentry-state",
                .data           = &dentry_stat,
                .maxlen         = 6*sizeof(int),
                .mode           = 0444,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = FS_OVERFLOWUID,
                .procname       = "overflowuid",
                .data           = &fs_overflowuid,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &minolduid,
                .extra2         = &maxolduid,
        },
        {
-               .ctl_name       = FS_OVERFLOWGID,
                .procname       = "overflowgid",
                .data           = &fs_overflowgid,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &minolduid,
                .extra2         = &maxolduid,
        },
 #ifdef CONFIG_FILE_LOCKING
        {
-               .ctl_name       = FS_LEASES,
                .procname       = "leases-enable",
                .data           = &leases_enable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_DNOTIFY
        {
-               .ctl_name       = FS_DIR_NOTIFY,
                .procname       = "dir-notify-enable",
                .data           = &dir_notify_enable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_MMU
 #ifdef CONFIG_FILE_LOCKING
        {
-               .ctl_name       = FS_LEASE_TIME,
                .procname       = "lease-break-time",
                .data           = &lease_break_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
 #endif
 #ifdef CONFIG_AIO
@@ -1548,19 +1370,18 @@ static struct ctl_table fs_table[] = {
                .data           = &aio_nr,
                .maxlen         = sizeof(aio_nr),
                .mode           = 0444,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
        },
        {
                .procname       = "aio-max-nr",
                .data           = &aio_max_nr,
                .maxlen         = sizeof(aio_max_nr),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
        },
 #endif /* CONFIG_AIO */
 #ifdef CONFIG_INOTIFY_USER
        {
-               .ctl_name       = FS_INOTIFY,
                .procname       = "inotify",
                .mode           = 0555,
                .child          = inotify_table,
@@ -1575,19 +1396,16 @@ static struct ctl_table fs_table[] = {
 #endif
 #endif
        {
-               .ctl_name       = KERN_SETUID_DUMPABLE,
                .procname       = "suid_dumpable",
                .data           = &suid_dumpable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &two,
        },
 #if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE)
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "binfmt_misc",
                .mode           = 0555,
                .child          = binfmt_misc_table,
@@ -1597,13 +1415,12 @@ static struct ctl_table fs_table[] = {
  * NOTE: do not add new entries to this table unless you have read
  * Documentation/sysctl/ctl_unnumbered.txt
  */
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table debug_table[] = {
 #if defined(CONFIG_X86) || defined(CONFIG_PPC)
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "exception-trace",
                .data           = &show_unhandled_signals,
                .maxlen         = sizeof(int),
@@ -1611,11 +1428,11 @@ static struct ctl_table debug_table[] = {
                .proc_handler   = proc_dointvec
        },
 #endif
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table dev_table[] = {
-       { .ctl_name = 0 }
+       { }
 };
 
 static DEFINE_SPINLOCK(sysctl_lock);
@@ -1769,122 +1586,6 @@ void register_sysctl_root(struct ctl_table_root *root)
        spin_unlock(&sysctl_lock);
 }
 
-#ifdef CONFIG_SYSCTL_SYSCALL
-/* Perform the actual read/write of a sysctl table entry. */
-static int do_sysctl_strategy(struct ctl_table_root *root,
-                       struct ctl_table *table,
-                       void __user *oldval, size_t __user *oldlenp,
-                       void __user *newval, size_t newlen)
-{
-       int op = 0, rc;
-
-       if (oldval)
-               op |= MAY_READ;
-       if (newval)
-               op |= MAY_WRITE;
-       if (sysctl_perm(root, table, op))
-               return -EPERM;
-
-       if (table->strategy) {
-               rc = table->strategy(table, oldval, oldlenp, newval, newlen);
-               if (rc < 0)
-                       return rc;
-               if (rc > 0)
-                       return 0;
-       }
-
-       /* If there is no strategy routine, or if the strategy returns
-        * zero, proceed with automatic r/w */
-       if (table->data && table->maxlen) {
-               rc = sysctl_data(table, oldval, oldlenp, newval, newlen);
-               if (rc < 0)
-                       return rc;
-       }
-       return 0;
-}
-
-static int parse_table(int __user *name, int nlen,
-                      void __user *oldval, size_t __user *oldlenp,
-                      void __user *newval, size_t newlen,
-                      struct ctl_table_root *root,
-                      struct ctl_table *table)
-{
-       int n;
-repeat:
-       if (!nlen)
-               return -ENOTDIR;
-       if (get_user(n, name))
-               return -EFAULT;
-       for ( ; table->ctl_name || table->procname; table++) {
-               if (!table->ctl_name)
-                       continue;
-               if (n == table->ctl_name) {
-                       int error;
-                       if (table->child) {
-                               if (sysctl_perm(root, table, MAY_EXEC))
-                                       return -EPERM;
-                               name++;
-                               nlen--;
-                               table = table->child;
-                               goto repeat;
-                       }
-                       error = do_sysctl_strategy(root, table,
-                                                  oldval, oldlenp,
-                                                  newval, newlen);
-                       return error;
-               }
-       }
-       return -ENOTDIR;
-}
-
-int do_sysctl(int __user *name, int nlen, void __user *oldval, size_t __user *oldlenp,
-              void __user *newval, size_t newlen)
-{
-       struct ctl_table_header *head;
-       int error = -ENOTDIR;
-
-       if (nlen <= 0 || nlen >= CTL_MAXNAME)
-               return -ENOTDIR;
-       if (oldval) {
-               int old_len;
-               if (!oldlenp || get_user(old_len, oldlenp))
-                       return -EFAULT;
-       }
-
-       for (head = sysctl_head_next(NULL); head;
-                       head = sysctl_head_next(head)) {
-               error = parse_table(name, nlen, oldval, oldlenp, 
-                                       newval, newlen,
-                                       head->root, head->ctl_table);
-               if (error != -ENOTDIR) {
-                       sysctl_head_finish(head);
-                       break;
-               }
-       }
-       return error;
-}
-
-SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
-{
-       struct __sysctl_args tmp;
-       int error;
-
-       if (copy_from_user(&tmp, args, sizeof(tmp)))
-               return -EFAULT;
-
-       error = deprecated_sysctl_warning(&tmp);
-       if (error)
-               goto out;
-
-       lock_kernel();
-       error = do_sysctl(tmp.name, tmp.nlen, tmp.oldval, tmp.oldlenp,
-                         tmp.newval, tmp.newlen);
-       unlock_kernel();
-out:
-       return error;
-}
-#endif /* CONFIG_SYSCTL_SYSCALL */
-
 /*
  * sysctl_perm does NOT grant the superuser all rights automatically, because
  * some sysctl variables are readonly even to root.
@@ -1920,7 +1621,7 @@ int sysctl_perm(struct ctl_table_root *root, struct ctl_table *table, int op)
 
 static void sysctl_set_parent(struct ctl_table *parent, struct ctl_table *table)
 {
-       for (; table->ctl_name || table->procname; table++) {
+       for (; table->procname; table++) {
                table->parent = parent;
                if (table->child)
                        sysctl_set_parent(table, table->child);
@@ -1952,11 +1653,11 @@ static struct ctl_table *is_branch_in(struct ctl_table *branch,
                return NULL;
 
        /* ... and nothing else */
-       if (branch[1].procname || branch[1].ctl_name)
+       if (branch[1].procname)
                return NULL;
 
        /* table should contain subdirectory with the same name */
-       for (p = table; p->procname || p->ctl_name; p++) {
+       for (p = table; p->procname; p++) {
                if (!p->child)
                        continue;
                if (p->procname && strcmp(p->procname, s) == 0)
@@ -2001,9 +1702,6 @@ static void try_attach(struct ctl_table_header *p, struct ctl_table_header *q)
  *
  * The members of the &struct ctl_table structure are used as follows:
  *
- * ctl_name - This is the numeric sysctl value used by sysctl(2). The number
- *            must be unique within that level of sysctl
- *
  * procname - the name of the sysctl file under /proc/sys. Set to %NULL to not
  *            enter a sysctl file
  *
@@ -2018,8 +1716,6 @@ static void try_attach(struct ctl_table_header *p, struct ctl_table_header *q)
  *
  * proc_handler - the text handler routine (described below)
  *
- * strategy - the strategy routine (described below)
- *
  * de - for internal use by the sysctl routines
  *
  * extra1, extra2 - extra pointers usable by the proc handler routines
@@ -2032,19 +1728,6 @@ static void try_attach(struct ctl_table_header *p, struct ctl_table_header *q)
  * struct enable minimal validation of the values being written to be
  * 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
  * mirrored under /proc/sys (non-terminals are handled by a built-in
  * directory handler).  Several default handlers are available to
@@ -2071,13 +1754,13 @@ struct ctl_table_header *__register_sysctl_paths(
        struct ctl_table_set *set;
 
        /* Count the path components */
-       for (npath = 0; path[npath].ctl_name || path[npath].procname; ++npath)
+       for (npath = 0; path[npath].procname; ++npath)
                ;
 
        /*
         * For each path component, allocate a 2-element ctl_table array.
         * The first array element will be filled with the sysctl entry
-        * for this, the second will be the sentinel (ctl_name == 0).
+        * for this, the second will be the sentinel (procname == 0).
         *
         * We allocate everything in one go so that we don't have to
         * worry about freeing additional memory in unregister_sysctl_table.
@@ -2094,7 +1777,6 @@ struct ctl_table_header *__register_sysctl_paths(
        for (n = 0; n < npath; ++n, ++path) {
                /* Copy the procname */
                new->procname = path->procname;
-               new->ctl_name = path->ctl_name;
                new->mode     = 0555;
 
                *prevp = new;
@@ -2956,286 +2638,6 @@ int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int write,
 
 #endif /* CONFIG_PROC_FS */
 
-
-#ifdef CONFIG_SYSCTL_SYSCALL
-/*
- * General sysctl support routines 
- */
-
-/* The generic sysctl data routine (used if no strategy routine supplied) */
-int sysctl_data(struct ctl_table *table,
-               void __user *oldval, size_t __user *oldlenp,
-               void __user *newval, size_t newlen)
-{
-       size_t len;
-
-       /* Get out of I don't have a variable */
-       if (!table->data || !table->maxlen)
-               return -ENOTDIR;
-
-       if (oldval && oldlenp) {
-               if (get_user(len, oldlenp))
-                       return -EFAULT;
-               if (len) {
-                       if (len > table->maxlen)
-                               len = table->maxlen;
-                       if (copy_to_user(oldval, table->data, len))
-                               return -EFAULT;
-                       if (put_user(len, oldlenp))
-                               return -EFAULT;
-               }
-       }
-
-       if (newval && newlen) {
-               if (newlen > table->maxlen)
-                       newlen = table->maxlen;
-
-               if (copy_from_user(table->data, newval, newlen))
-                       return -EFAULT;
-       }
-       return 1;
-}
-
-/* The generic string strategy routine: */
-int sysctl_string(struct ctl_table *table,
-                 void __user *oldval, size_t __user *oldlenp,
-                 void __user *newval, size_t newlen)
-{
-       if (!table->data || !table->maxlen) 
-               return -ENOTDIR;
-       
-       if (oldval && oldlenp) {
-               size_t bufsize;
-               if (get_user(bufsize, oldlenp))
-                       return -EFAULT;
-               if (bufsize) {
-                       size_t len = strlen(table->data), copied;
-
-                       /* This shouldn't trigger for a well-formed sysctl */
-                       if (len > table->maxlen)
-                               len = table->maxlen;
-
-                       /* Copy up to a max of bufsize-1 bytes of the string */
-                       copied = (len >= bufsize) ? bufsize - 1 : len;
-
-                       if (copy_to_user(oldval, table->data, copied) ||
-                           put_user(0, (char __user *)(oldval + copied)))
-                               return -EFAULT;
-                       if (put_user(len, oldlenp))
-                               return -EFAULT;
-               }
-       }
-       if (newval && newlen) {
-               size_t len = newlen;
-               if (len > table->maxlen)
-                       len = table->maxlen;
-               if(copy_from_user(table->data, newval, len))
-                       return -EFAULT;
-               if (len == table->maxlen)
-                       len--;
-               ((char *) table->data)[len] = 0;
-       }
-       return 1;
-}
-
-/*
- * This function makes sure that all of the integers in the vector
- * are between the minimum and maximum values given in the arrays
- * table->extra1 and table->extra2, respectively.
- */
-int sysctl_intvec(struct ctl_table *table,
-               void __user *oldval, size_t __user *oldlenp,
-               void __user *newval, size_t newlen)
-{
-
-       if (newval && newlen) {
-               int __user *vec = (int __user *) newval;
-               int *min = (int *) table->extra1;
-               int *max = (int *) table->extra2;
-               size_t length;
-               int i;
-
-               if (newlen % sizeof(int) != 0)
-                       return -EINVAL;
-
-               if (!table->extra1 && !table->extra2)
-                       return 0;
-
-               if (newlen > table->maxlen)
-                       newlen = table->maxlen;
-               length = newlen / sizeof(int);
-
-               for (i = 0; i < length; i++) {
-                       int value;
-                       if (get_user(value, vec + i))
-                               return -EFAULT;
-                       if (min && value < min[i])
-                               return -EINVAL;
-                       if (max && value > max[i])
-                               return -EINVAL;
-               }
-       }
-       return 0;
-}
-
-/* Strategy function to convert jiffies to seconds */ 
-int sysctl_jiffies(struct ctl_table *table,
-               void __user *oldval, size_t __user *oldlenp,
-               void __user *newval, size_t newlen)
-{
-       if (oldval && oldlenp) {
-               size_t olen;
-
-               if (get_user(olen, oldlenp))
-                       return -EFAULT;
-               if (olen) {
-                       int val;
-
-                       if (olen < sizeof(int))
-                               return -EINVAL;
-
-                       val = *(int *)(table->data) / HZ;
-                       if (put_user(val, (int __user *)oldval))
-                               return -EFAULT;
-                       if (put_user(sizeof(int), oldlenp))
-                               return -EFAULT;
-               }
-       }
-       if (newval && newlen) { 
-               int new;
-               if (newlen != sizeof(int))
-                       return -EINVAL; 
-               if (get_user(new, (int __user *)newval))
-                       return -EFAULT;
-               *(int *)(table->data) = new*HZ; 
-       }
-       return 1;
-}
-
-/* Strategy function to convert jiffies to seconds */ 
-int sysctl_ms_jiffies(struct ctl_table *table,
-               void __user *oldval, size_t __user *oldlenp,
-               void __user *newval, size_t newlen)
-{
-       if (oldval && oldlenp) {
-               size_t olen;
-
-               if (get_user(olen, oldlenp))
-                       return -EFAULT;
-               if (olen) {
-                       int val;
-
-                       if (olen < sizeof(int))
-                               return -EINVAL;
-
-                       val = jiffies_to_msecs(*(int *)(table->data));
-                       if (put_user(val, (int __user *)oldval))
-                               return -EFAULT;
-                       if (put_user(sizeof(int), oldlenp))
-                               return -EFAULT;
-               }
-       }
-       if (newval && newlen) { 
-               int new;
-               if (newlen != sizeof(int))
-                       return -EINVAL; 
-               if (get_user(new, (int __user *)newval))
-                       return -EFAULT;
-               *(int *)(table->data) = msecs_to_jiffies(new);
-       }
-       return 1;
-}
-
-
-
-#else /* CONFIG_SYSCTL_SYSCALL */
-
-
-SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
-{
-       struct __sysctl_args tmp;
-       int error;
-
-       if (copy_from_user(&tmp, args, sizeof(tmp)))
-               return -EFAULT;
-
-       error = deprecated_sysctl_warning(&tmp);
-
-       /* If no error reading the parameters then just -ENOSYS ... */
-       if (!error)
-               error = -ENOSYS;
-
-       return error;
-}
-
-int sysctl_data(struct ctl_table *table,
-                 void __user *oldval, size_t __user *oldlenp,
-                 void __user *newval, size_t newlen)
-{
-       return -ENOSYS;
-}
-
-int sysctl_string(struct ctl_table *table,
-                 void __user *oldval, size_t __user *oldlenp,
-                 void __user *newval, size_t newlen)
-{
-       return -ENOSYS;
-}
-
-int sysctl_intvec(struct ctl_table *table,
-               void __user *oldval, size_t __user *oldlenp,
-               void __user *newval, size_t newlen)
-{
-       return -ENOSYS;
-}
-
-int sysctl_jiffies(struct ctl_table *table,
-               void __user *oldval, size_t __user *oldlenp,
-               void __user *newval, size_t newlen)
-{
-       return -ENOSYS;
-}
-
-int sysctl_ms_jiffies(struct ctl_table *table,
-               void __user *oldval, size_t __user *oldlenp,
-               void __user *newval, size_t newlen)
-{
-       return -ENOSYS;
-}
-
-#endif /* CONFIG_SYSCTL_SYSCALL */
-
-static int deprecated_sysctl_warning(struct __sysctl_args *args)
-{
-       static int msg_count;
-       int name[CTL_MAXNAME];
-       int i;
-
-       /* Check args->nlen. */
-       if (args->nlen < 0 || args->nlen > CTL_MAXNAME)
-               return -ENOTDIR;
-
-       /* Read in the sysctl name for better debug message logging */
-       for (i = 0; i < args->nlen; i++)
-               if (get_user(name[i], args->name + i))
-                       return -EFAULT;
-
-       /* Ignore accesses to kernel.version */
-       if ((args->nlen == 2) && (name[0] == CTL_KERN) && (name[1] == KERN_VERSION))
-               return 0;
-
-       if (msg_count < 5) {
-               msg_count++;
-               printk(KERN_INFO
-                       "warning: process `%s' used the deprecated sysctl "
-                       "system call with ", current->comm);
-               for (i = 0; i < args->nlen; i++)
-                       printk("%d.", name[i]);
-               printk("\n");
-       }
-       return 0;
-}
-
 /*
  * No sense putting this after each symbol definition, twice,
  * exception granted :-)
@@ -3250,9 +2652,4 @@ EXPORT_SYMBOL(proc_doulongvec_minmax);
 EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax);
 EXPORT_SYMBOL(register_sysctl_table);
 EXPORT_SYMBOL(register_sysctl_paths);
-EXPORT_SYMBOL(sysctl_intvec);
-EXPORT_SYMBOL(sysctl_jiffies);
-EXPORT_SYMBOL(sysctl_ms_jiffies);
-EXPORT_SYMBOL(sysctl_string);
-EXPORT_SYMBOL(sysctl_data);
 EXPORT_SYMBOL(unregister_sysctl_table);
diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c
new file mode 100644 (file)
index 0000000..b75dbf4
--- /dev/null
@@ -0,0 +1,1507 @@
+#include <linux/stat.h>
+#include <linux/sysctl.h>
+#include "../fs/xfs/linux-2.6/xfs_sysctl.h"
+#include <linux/sunrpc/debug.h>
+#include <linux/string.h>
+#include <net/ip_vs.h>
+#include <linux/syscalls.h>
+#include <linux/namei.h>
+#include <linux/mount.h>
+#include <linux/fs.h>
+#include <linux/nsproxy.h>
+#include <linux/pid_namespace.h>
+#include <linux/file.h>
+#include <linux/ctype.h>
+#include <linux/netdevice.h>
+
+#ifdef CONFIG_SYSCTL_SYSCALL
+
+struct bin_table;
+typedef ssize_t bin_convert_t(struct file *file,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen);
+
+static bin_convert_t bin_dir;
+static bin_convert_t bin_string;
+static bin_convert_t bin_intvec;
+static bin_convert_t bin_ulongvec;
+static bin_convert_t bin_uuid;
+static bin_convert_t bin_dn_node_address;
+
+#define CTL_DIR   bin_dir
+#define CTL_STR   bin_string
+#define CTL_INT   bin_intvec
+#define CTL_ULONG bin_ulongvec
+#define CTL_UUID  bin_uuid
+#define CTL_DNADR bin_dn_node_address
+
+#define BUFSZ 256
+
+struct bin_table {
+       bin_convert_t           *convert;
+       int                     ctl_name;
+       const char              *procname;
+       const struct bin_table  *child;
+};
+
+static const struct bin_table bin_random_table[] = {
+       { CTL_INT,      RANDOM_POOLSIZE,        "poolsize" },
+       { CTL_INT,      RANDOM_ENTROPY_COUNT,   "entropy_avail" },
+       { CTL_INT,      RANDOM_READ_THRESH,     "read_wakeup_threshold" },
+       { CTL_INT,      RANDOM_WRITE_THRESH,    "write_wakeup_threshold" },
+       { CTL_UUID,     RANDOM_BOOT_ID,         "boot_id" },
+       { CTL_UUID,     RANDOM_UUID,            "uuid" },
+       {}
+};
+
+static const struct bin_table bin_pty_table[] = {
+       { CTL_INT,      PTY_MAX,        "max" },
+       { CTL_INT,      PTY_NR,         "nr" },
+       {}
+};
+
+static const struct bin_table bin_kern_table[] = {
+       { CTL_STR,      KERN_OSTYPE,                    "ostype" },
+       { CTL_STR,      KERN_OSRELEASE,                 "osrelease" },
+       /* KERN_OSREV not used */
+       { CTL_STR,      KERN_VERSION,                   "version" },
+       /* KERN_SECUREMASK not used */
+       /* KERN_PROF not used */
+       { CTL_STR,      KERN_NODENAME,                  "hostname" },
+       { CTL_STR,      KERN_DOMAINNAME,                "domainname" },
+
+       { CTL_INT,      KERN_PANIC,                     "panic" },
+       { CTL_INT,      KERN_REALROOTDEV,               "real-root-dev" },
+
+       { CTL_STR,      KERN_SPARC_REBOOT,              "reboot-cmd" },
+       { CTL_INT,      KERN_CTLALTDEL,                 "ctrl-alt-del" },
+       { CTL_INT,      KERN_PRINTK,                    "printk" },
+
+       /* KERN_NAMETRANS not used */
+       /* KERN_PPC_HTABRECLAIM not used */
+       /* KERN_PPC_ZEROPAGED not used */
+       { CTL_INT,      KERN_PPC_POWERSAVE_NAP,         "powersave-nap" },
+
+       { CTL_STR,      KERN_MODPROBE,                  "modprobe" },
+       { CTL_INT,      KERN_SG_BIG_BUFF,               "sg-big-buff" },
+       { CTL_INT,      KERN_ACCT,                      "acct" },
+       /* KERN_PPC_L2CR "l2cr" no longer used */
+
+       /* KERN_RTSIGNR not used */
+       /* KERN_RTSIGMAX not used */
+
+       { CTL_ULONG,    KERN_SHMMAX,                    "shmmax" },
+       { CTL_INT,      KERN_MSGMAX,                    "msgmax" },
+       { CTL_INT,      KERN_MSGMNB,                    "msgmnb" },
+       /* KERN_MSGPOOL not used*/
+       { CTL_INT,      KERN_SYSRQ,                     "sysrq" },
+       { CTL_INT,      KERN_MAX_THREADS,               "threads-max" },
+       { CTL_DIR,      KERN_RANDOM,                    "random",       bin_random_table },
+       { CTL_ULONG,    KERN_SHMALL,                    "shmall" },
+       { CTL_INT,      KERN_MSGMNI,                    "msgmni" },
+       { CTL_INT,      KERN_SEM,                       "sem" },
+       { CTL_INT,      KERN_SPARC_STOP_A,              "stop-a" },
+       { CTL_INT,      KERN_SHMMNI,                    "shmmni" },
+
+       { CTL_INT,      KERN_OVERFLOWUID,               "overflowuid" },
+       { CTL_INT,      KERN_OVERFLOWGID,               "overflowgid" },
+
+       { CTL_STR,      KERN_HOTPLUG,                   "hotplug", },
+       { CTL_INT,      KERN_IEEE_EMULATION_WARNINGS,   "ieee_emulation_warnings" },
+
+       { CTL_INT,      KERN_S390_USER_DEBUG_LOGGING,   "userprocess_debug" },
+       { CTL_INT,      KERN_CORE_USES_PID,             "core_uses_pid" },
+       /* KERN_TAINTED "tainted" no longer used */
+       { CTL_INT,      KERN_CADPID,                    "cad_pid" },
+       { CTL_INT,      KERN_PIDMAX,                    "pid_max" },
+       { CTL_STR,      KERN_CORE_PATTERN,              "core_pattern" },
+       { CTL_INT,      KERN_PANIC_ON_OOPS,             "panic_on_oops" },
+       { CTL_INT,      KERN_HPPA_PWRSW,                "soft-power" },
+       { CTL_INT,      KERN_HPPA_UNALIGNED,            "unaligned-trap" },
+
+       { CTL_INT,      KERN_PRINTK_RATELIMIT,          "printk_ratelimit" },
+       { CTL_INT,      KERN_PRINTK_RATELIMIT_BURST,    "printk_ratelimit_burst" },
+
+       { CTL_DIR,      KERN_PTY,                       "pty",          bin_pty_table },
+       { CTL_INT,      KERN_NGROUPS_MAX,               "ngroups_max" },
+       { CTL_INT,      KERN_SPARC_SCONS_PWROFF,        "scons-poweroff" },
+       /* KERN_HZ_TIMER "hz_timer" no longer used */
+       { CTL_INT,      KERN_UNKNOWN_NMI_PANIC,         "unknown_nmi_panic" },
+       { CTL_INT,      KERN_BOOTLOADER_TYPE,           "bootloader_type" },
+       { CTL_INT,      KERN_RANDOMIZE,                 "randomize_va_space" },
+
+       { CTL_INT,      KERN_SPIN_RETRY,                "spin_retry" },
+       /* KERN_ACPI_VIDEO_FLAGS "acpi_video_flags" no longer used */
+       { CTL_INT,      KERN_IA64_UNALIGNED,            "ignore-unaligned-usertrap" },
+       { CTL_INT,      KERN_COMPAT_LOG,                "compat-log" },
+       { CTL_INT,      KERN_MAX_LOCK_DEPTH,            "max_lock_depth" },
+       { CTL_INT,      KERN_NMI_WATCHDOG,              "nmi_watchdog" },
+       { CTL_INT,      KERN_PANIC_ON_NMI,              "panic_on_unrecovered_nmi" },
+       {}
+};
+
+static const struct bin_table bin_vm_table[] = {
+       { CTL_INT,      VM_OVERCOMMIT_MEMORY,           "overcommit_memory" },
+       { CTL_INT,      VM_PAGE_CLUSTER,                "page-cluster" },
+       { CTL_INT,      VM_DIRTY_BACKGROUND,            "dirty_background_ratio" },
+       { CTL_INT,      VM_DIRTY_RATIO,                 "dirty_ratio" },
+       /* VM_DIRTY_WB_CS "dirty_writeback_centisecs" no longer used */
+       /* VM_DIRTY_EXPIRE_CS "dirty_expire_centisecs" no longer used */
+       { CTL_INT,      VM_NR_PDFLUSH_THREADS,          "nr_pdflush_threads" },
+       { CTL_INT,      VM_OVERCOMMIT_RATIO,            "overcommit_ratio" },
+       /* VM_PAGEBUF unused */
+       /* VM_HUGETLB_PAGES "nr_hugepages" no longer used */
+       { CTL_INT,      VM_SWAPPINESS,                  "swappiness" },
+       { CTL_INT,      VM_LOWMEM_RESERVE_RATIO,        "lowmem_reserve_ratio" },
+       { CTL_INT,      VM_MIN_FREE_KBYTES,             "min_free_kbytes" },
+       { CTL_INT,      VM_MAX_MAP_COUNT,               "max_map_count" },
+       { CTL_INT,      VM_LAPTOP_MODE,                 "laptop_mode" },
+       { CTL_INT,      VM_BLOCK_DUMP,                  "block_dump" },
+       { CTL_INT,      VM_HUGETLB_GROUP,               "hugetlb_shm_group" },
+       { CTL_INT,      VM_VFS_CACHE_PRESSURE,  "vfs_cache_pressure" },
+       { CTL_INT,      VM_LEGACY_VA_LAYOUT,            "legacy_va_layout" },
+       /* VM_SWAP_TOKEN_TIMEOUT unused */
+       { CTL_INT,      VM_DROP_PAGECACHE,              "drop_caches" },
+       { CTL_INT,      VM_PERCPU_PAGELIST_FRACTION,    "percpu_pagelist_fraction" },
+       { CTL_INT,      VM_ZONE_RECLAIM_MODE,           "zone_reclaim_mode" },
+       { CTL_INT,      VM_MIN_UNMAPPED,                "min_unmapped_ratio" },
+       { CTL_INT,      VM_PANIC_ON_OOM,                "panic_on_oom" },
+       { CTL_INT,      VM_VDSO_ENABLED,                "vdso_enabled" },
+       { CTL_INT,      VM_MIN_SLAB,                    "min_slab_ratio" },
+
+       {}
+};
+
+static const struct bin_table bin_net_core_table[] = {
+       { CTL_INT,      NET_CORE_WMEM_MAX,      "wmem_max" },
+       { CTL_INT,      NET_CORE_RMEM_MAX,      "rmem_max" },
+       { CTL_INT,      NET_CORE_WMEM_DEFAULT,  "wmem_default" },
+       { CTL_INT,      NET_CORE_RMEM_DEFAULT,  "rmem_default" },
+       /* NET_CORE_DESTROY_DELAY unused */
+       { CTL_INT,      NET_CORE_MAX_BACKLOG,   "netdev_max_backlog" },
+       /* NET_CORE_FASTROUTE unused */
+       { CTL_INT,      NET_CORE_MSG_COST,      "message_cost" },
+       { CTL_INT,      NET_CORE_MSG_BURST,     "message_burst" },
+       { CTL_INT,      NET_CORE_OPTMEM_MAX,    "optmem_max" },
+       /* NET_CORE_HOT_LIST_LENGTH unused */
+       /* NET_CORE_DIVERT_VERSION unused */
+       /* NET_CORE_NO_CONG_THRESH unused */
+       /* NET_CORE_NO_CONG unused */
+       /* NET_CORE_LO_CONG unused */
+       /* NET_CORE_MOD_CONG unused */
+       { CTL_INT,      NET_CORE_DEV_WEIGHT,    "dev_weight" },
+       { CTL_INT,      NET_CORE_SOMAXCONN,     "somaxconn" },
+       { CTL_INT,      NET_CORE_BUDGET,        "netdev_budget" },
+       { CTL_INT,      NET_CORE_AEVENT_ETIME,  "xfrm_aevent_etime" },
+       { CTL_INT,      NET_CORE_AEVENT_RSEQTH, "xfrm_aevent_rseqth" },
+       { CTL_INT,      NET_CORE_WARNINGS,      "warnings" },
+       {},
+};
+
+static const struct bin_table bin_net_unix_table[] = {
+       /* NET_UNIX_DESTROY_DELAY unused */
+       /* NET_UNIX_DELETE_DELAY unused */
+       { CTL_INT,      NET_UNIX_MAX_DGRAM_QLEN,        "max_dgram_qlen" },
+       {}
+};
+
+static const struct bin_table bin_net_ipv4_route_table[] = {
+       { CTL_INT,      NET_IPV4_ROUTE_FLUSH,                   "flush" },
+       /* NET_IPV4_ROUTE_MIN_DELAY "min_delay" no longer used */
+       /* NET_IPV4_ROUTE_MAX_DELAY "max_delay" no longer used */
+       { CTL_INT,      NET_IPV4_ROUTE_GC_THRESH,               "gc_thresh" },
+       { CTL_INT,      NET_IPV4_ROUTE_MAX_SIZE,                "max_size" },
+       { CTL_INT,      NET_IPV4_ROUTE_GC_MIN_INTERVAL,         "gc_min_interval" },
+       { CTL_INT,      NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS,      "gc_min_interval_ms" },
+       { CTL_INT,      NET_IPV4_ROUTE_GC_TIMEOUT,              "gc_timeout" },
+       { CTL_INT,      NET_IPV4_ROUTE_GC_INTERVAL,             "gc_interval" },
+       { CTL_INT,      NET_IPV4_ROUTE_REDIRECT_LOAD,           "redirect_load" },
+       { CTL_INT,      NET_IPV4_ROUTE_REDIRECT_NUMBER,         "redirect_number" },
+       { CTL_INT,      NET_IPV4_ROUTE_REDIRECT_SILENCE,        "redirect_silence" },
+       { CTL_INT,      NET_IPV4_ROUTE_ERROR_COST,              "error_cost" },
+       { CTL_INT,      NET_IPV4_ROUTE_ERROR_BURST,             "error_burst" },
+       { CTL_INT,      NET_IPV4_ROUTE_GC_ELASTICITY,           "gc_elasticity" },
+       { CTL_INT,      NET_IPV4_ROUTE_MTU_EXPIRES,             "mtu_expires" },
+       { CTL_INT,      NET_IPV4_ROUTE_MIN_PMTU,                "min_pmtu" },
+       { CTL_INT,      NET_IPV4_ROUTE_MIN_ADVMSS,              "min_adv_mss" },
+       { CTL_INT,      NET_IPV4_ROUTE_SECRET_INTERVAL,         "secret_interval" },
+       {}
+};
+
+static const struct bin_table bin_net_ipv4_conf_vars_table[] = {
+       { CTL_INT,      NET_IPV4_CONF_FORWARDING,               "forwarding" },
+       { CTL_INT,      NET_IPV4_CONF_MC_FORWARDING,            "mc_forwarding" },
+
+       { CTL_INT,      NET_IPV4_CONF_ACCEPT_REDIRECTS,         "accept_redirects" },
+       { CTL_INT,      NET_IPV4_CONF_SECURE_REDIRECTS,         "secure_redirects" },
+       { CTL_INT,      NET_IPV4_CONF_SEND_REDIRECTS,           "send_redirects" },
+       { CTL_INT,      NET_IPV4_CONF_SHARED_MEDIA,             "shared_media" },
+       { CTL_INT,      NET_IPV4_CONF_RP_FILTER,                "rp_filter" },
+       { CTL_INT,      NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE,      "accept_source_route" },
+       { CTL_INT,      NET_IPV4_CONF_PROXY_ARP,                "proxy_arp" },
+       { CTL_INT,      NET_IPV4_CONF_MEDIUM_ID,                "medium_id" },
+       { CTL_INT,      NET_IPV4_CONF_BOOTP_RELAY,              "bootp_relay" },
+       { CTL_INT,      NET_IPV4_CONF_LOG_MARTIANS,             "log_martians" },
+       { CTL_INT,      NET_IPV4_CONF_TAG,                      "tag" },
+       { CTL_INT,      NET_IPV4_CONF_ARPFILTER,                "arp_filter" },
+       { CTL_INT,      NET_IPV4_CONF_ARP_ANNOUNCE,             "arp_announce" },
+       { CTL_INT,      NET_IPV4_CONF_ARP_IGNORE,               "arp_ignore" },
+       { CTL_INT,      NET_IPV4_CONF_ARP_ACCEPT,               "arp_accept" },
+       { CTL_INT,      NET_IPV4_CONF_ARP_NOTIFY,               "arp_notify" },
+
+       { CTL_INT,      NET_IPV4_CONF_NOXFRM,                   "disable_xfrm" },
+       { CTL_INT,      NET_IPV4_CONF_NOPOLICY,                 "disable_policy" },
+       { CTL_INT,      NET_IPV4_CONF_FORCE_IGMP_VERSION,       "force_igmp_version" },
+       { CTL_INT,      NET_IPV4_CONF_PROMOTE_SECONDARIES,      "promote_secondaries" },
+       {}
+};
+
+static const struct bin_table bin_net_ipv4_conf_table[] = {
+       { CTL_DIR,      NET_PROTO_CONF_ALL,     "all",          bin_net_ipv4_conf_vars_table },
+       { CTL_DIR,      NET_PROTO_CONF_DEFAULT, "default",      bin_net_ipv4_conf_vars_table },
+       { CTL_DIR,      0, NULL, bin_net_ipv4_conf_vars_table },
+       {}
+};
+
+static const struct bin_table bin_net_neigh_vars_table[] = {
+       { CTL_INT,      NET_NEIGH_MCAST_SOLICIT,        "mcast_solicit" },
+       { CTL_INT,      NET_NEIGH_UCAST_SOLICIT,        "ucast_solicit" },
+       { CTL_INT,      NET_NEIGH_APP_SOLICIT,          "app_solicit" },
+       /* NET_NEIGH_RETRANS_TIME "retrans_time" no longer used */
+       { CTL_INT,      NET_NEIGH_REACHABLE_TIME,       "base_reachable_time" },
+       { CTL_INT,      NET_NEIGH_DELAY_PROBE_TIME,     "delay_first_probe_time" },
+       { CTL_INT,      NET_NEIGH_GC_STALE_TIME,        "gc_stale_time" },
+       { CTL_INT,      NET_NEIGH_UNRES_QLEN,           "unres_qlen" },
+       { CTL_INT,      NET_NEIGH_PROXY_QLEN,           "proxy_qlen" },
+       /* NET_NEIGH_ANYCAST_DELAY "anycast_delay" no longer used */
+       /* NET_NEIGH_PROXY_DELAY "proxy_delay" no longer used */
+       /* NET_NEIGH_LOCKTIME "locktime" no longer used */
+       { CTL_INT,      NET_NEIGH_GC_INTERVAL,          "gc_interval" },
+       { CTL_INT,      NET_NEIGH_GC_THRESH1,           "gc_thresh1" },
+       { CTL_INT,      NET_NEIGH_GC_THRESH2,           "gc_thresh2" },
+       { CTL_INT,      NET_NEIGH_GC_THRESH3,           "gc_thresh3" },
+       { CTL_INT,      NET_NEIGH_RETRANS_TIME_MS,      "retrans_time_ms" },
+       { CTL_INT,      NET_NEIGH_REACHABLE_TIME_MS,    "base_reachable_time_ms" },
+       {}
+};
+
+static const struct bin_table bin_net_neigh_table[] = {
+       { CTL_DIR,      NET_PROTO_CONF_DEFAULT, "default", bin_net_neigh_vars_table },
+       { CTL_DIR,      0, NULL, bin_net_neigh_vars_table },
+       {}
+};
+
+static const struct bin_table bin_net_ipv4_netfilter_table[] = {
+       { CTL_INT,      NET_IPV4_NF_CONNTRACK_MAX,              "ip_conntrack_max" },
+
+       /* NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT "ip_conntrack_tcp_timeout_syn_sent" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV "ip_conntrack_tcp_timeout_syn_recv" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED "ip_conntrack_tcp_timeout_established" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT "ip_conntrack_tcp_timeout_fin_wait" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT "ip_conntrack_tcp_timeout_close_wait" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK "ip_conntrack_tcp_timeout_last_ack" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT "ip_conntrack_tcp_timeout_time_wait" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE "ip_conntrack_tcp_timeout_close" no longer used */
+
+       /* NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT "ip_conntrack_udp_timeout" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM "ip_conntrack_udp_timeout_stream" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT "ip_conntrack_icmp_timeout" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT "ip_conntrack_generic_timeout" no longer used */
+
+       { CTL_INT,      NET_IPV4_NF_CONNTRACK_BUCKETS,          "ip_conntrack_buckets" },
+       { CTL_INT,      NET_IPV4_NF_CONNTRACK_LOG_INVALID,      "ip_conntrack_log_invalid" },
+       /* NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS "ip_conntrack_tcp_timeout_max_retrans" no longer used */
+       { CTL_INT,      NET_IPV4_NF_CONNTRACK_TCP_LOOSE,        "ip_conntrack_tcp_loose" },
+       { CTL_INT,      NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL,   "ip_conntrack_tcp_be_liberal" },
+       { CTL_INT,      NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS,  "ip_conntrack_tcp_max_retrans" },
+
+       /* NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED "ip_conntrack_sctp_timeout_closed" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT "ip_conntrack_sctp_timeout_cookie_wait" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED "ip_conntrack_sctp_timeout_cookie_echoed" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED "ip_conntrack_sctp_timeout_established" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT "ip_conntrack_sctp_timeout_shutdown_sent" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD "ip_conntrack_sctp_timeout_shutdown_recd" no longer used */
+       /* NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT "ip_conntrack_sctp_timeout_shutdown_ack_sent" no longer used */
+
+       { CTL_INT,      NET_IPV4_NF_CONNTRACK_COUNT,            "ip_conntrack_count" },
+       { CTL_INT,      NET_IPV4_NF_CONNTRACK_CHECKSUM,         "ip_conntrack_checksum" },
+       {}
+};
+
+static const struct bin_table bin_net_ipv4_table[] = {
+       {CTL_INT,       NET_IPV4_FORWARD,                       "ip_forward" },
+
+       { CTL_DIR,      NET_IPV4_CONF,          "conf",         bin_net_ipv4_conf_table },
+       { CTL_DIR,      NET_IPV4_NEIGH,         "neigh",        bin_net_neigh_table },
+       { CTL_DIR,      NET_IPV4_ROUTE,         "route",        bin_net_ipv4_route_table },
+       /* NET_IPV4_FIB_HASH unused */
+       { CTL_DIR,      NET_IPV4_NETFILTER,     "netfilter",    bin_net_ipv4_netfilter_table },
+
+       { CTL_INT,      NET_IPV4_TCP_TIMESTAMPS,                "tcp_timestamps" },
+       { CTL_INT,      NET_IPV4_TCP_WINDOW_SCALING,            "tcp_window_scaling" },
+       { CTL_INT,      NET_IPV4_TCP_SACK,                      "tcp_sack" },
+       { CTL_INT,      NET_IPV4_TCP_RETRANS_COLLAPSE,          "tcp_retrans_collapse" },
+       { CTL_INT,      NET_IPV4_DEFAULT_TTL,                   "ip_default_ttl" },
+       /* NET_IPV4_AUTOCONFIG unused */
+       { CTL_INT,      NET_IPV4_NO_PMTU_DISC,                  "ip_no_pmtu_disc" },
+       { CTL_INT,      NET_IPV4_NONLOCAL_BIND,                 "ip_nonlocal_bind" },
+       { CTL_INT,      NET_IPV4_TCP_SYN_RETRIES,               "tcp_syn_retries" },
+       { CTL_INT,      NET_TCP_SYNACK_RETRIES,                 "tcp_synack_retries" },
+       { CTL_INT,      NET_TCP_MAX_ORPHANS,                    "tcp_max_orphans" },
+       { CTL_INT,      NET_TCP_MAX_TW_BUCKETS,                 "tcp_max_tw_buckets" },
+       { CTL_INT,      NET_IPV4_DYNADDR,                       "ip_dynaddr" },
+       { CTL_INT,      NET_IPV4_TCP_KEEPALIVE_TIME,            "tcp_keepalive_time" },
+       { CTL_INT,      NET_IPV4_TCP_KEEPALIVE_PROBES,          "tcp_keepalive_probes" },
+       { CTL_INT,      NET_IPV4_TCP_KEEPALIVE_INTVL,           "tcp_keepalive_intvl" },
+       { CTL_INT,      NET_IPV4_TCP_RETRIES1,                  "tcp_retries1" },
+       { CTL_INT,      NET_IPV4_TCP_RETRIES2,                  "tcp_retries2" },
+       { CTL_INT,      NET_IPV4_TCP_FIN_TIMEOUT,               "tcp_fin_timeout" },
+       { CTL_INT,      NET_TCP_SYNCOOKIES,                     "tcp_syncookies" },
+       { CTL_INT,      NET_TCP_TW_RECYCLE,                     "tcp_tw_recycle" },
+       { CTL_INT,      NET_TCP_ABORT_ON_OVERFLOW,              "tcp_abort_on_overflow" },
+       { CTL_INT,      NET_TCP_STDURG,                         "tcp_stdurg" },
+       { CTL_INT,      NET_TCP_RFC1337,                        "tcp_rfc1337" },
+       { CTL_INT,      NET_TCP_MAX_SYN_BACKLOG,                "tcp_max_syn_backlog" },
+       { CTL_INT,      NET_IPV4_LOCAL_PORT_RANGE,              "ip_local_port_range" },
+       { CTL_INT,      NET_IPV4_IGMP_MAX_MEMBERSHIPS,          "igmp_max_memberships" },
+       { CTL_INT,      NET_IPV4_IGMP_MAX_MSF,                  "igmp_max_msf" },
+       { CTL_INT,      NET_IPV4_INET_PEER_THRESHOLD,           "inet_peer_threshold" },
+       { CTL_INT,      NET_IPV4_INET_PEER_MINTTL,              "inet_peer_minttl" },
+       { CTL_INT,      NET_IPV4_INET_PEER_MAXTTL,              "inet_peer_maxttl" },
+       { CTL_INT,      NET_IPV4_INET_PEER_GC_MINTIME,          "inet_peer_gc_mintime" },
+       { CTL_INT,      NET_IPV4_INET_PEER_GC_MAXTIME,          "inet_peer_gc_maxtime" },
+       { CTL_INT,      NET_TCP_ORPHAN_RETRIES,                 "tcp_orphan_retries" },
+       { CTL_INT,      NET_TCP_FACK,                           "tcp_fack" },
+       { CTL_INT,      NET_TCP_REORDERING,                     "tcp_reordering" },
+       { CTL_INT,      NET_TCP_ECN,                            "tcp_ecn" },
+       { CTL_INT,      NET_TCP_DSACK,                          "tcp_dsack" },
+       { CTL_INT,      NET_TCP_MEM,                            "tcp_mem" },
+       { CTL_INT,      NET_TCP_WMEM,                           "tcp_wmem" },
+       { CTL_INT,      NET_TCP_RMEM,                           "tcp_rmem" },
+       { CTL_INT,      NET_TCP_APP_WIN,                        "tcp_app_win" },
+       { CTL_INT,      NET_TCP_ADV_WIN_SCALE,                  "tcp_adv_win_scale" },
+       { CTL_INT,      NET_TCP_TW_REUSE,                       "tcp_tw_reuse" },
+       { CTL_INT,      NET_TCP_FRTO,                           "tcp_frto" },
+       { CTL_INT,      NET_TCP_FRTO_RESPONSE,                  "tcp_frto_response" },
+       { CTL_INT,      NET_TCP_LOW_LATENCY,                    "tcp_low_latency" },
+       { CTL_INT,      NET_TCP_NO_METRICS_SAVE,                "tcp_no_metrics_save" },
+       { CTL_INT,      NET_TCP_MODERATE_RCVBUF,                "tcp_moderate_rcvbuf" },
+       { CTL_INT,      NET_TCP_TSO_WIN_DIVISOR,                "tcp_tso_win_divisor" },
+       { CTL_STR,      NET_TCP_CONG_CONTROL,                   "tcp_congestion_control" },
+       { CTL_INT,      NET_TCP_ABC,                            "tcp_abc" },
+       { CTL_INT,      NET_TCP_MTU_PROBING,                    "tcp_mtu_probing" },
+       { CTL_INT,      NET_TCP_BASE_MSS,                       "tcp_base_mss" },
+       { CTL_INT,      NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS, "tcp_workaround_signed_windows" },
+       { CTL_INT,      NET_TCP_DMA_COPYBREAK,                  "tcp_dma_copybreak" },
+       { CTL_INT,      NET_TCP_SLOW_START_AFTER_IDLE,          "tcp_slow_start_after_idle" },
+       { CTL_INT,      NET_CIPSOV4_CACHE_ENABLE,               "cipso_cache_enable" },
+       { CTL_INT,      NET_CIPSOV4_CACHE_BUCKET_SIZE,          "cipso_cache_bucket_size" },
+       { CTL_INT,      NET_CIPSOV4_RBM_OPTFMT,                 "cipso_rbm_optfmt" },
+       { CTL_INT,      NET_CIPSOV4_RBM_STRICTVALID,            "cipso_rbm_strictvalid" },
+       /* NET_TCP_AVAIL_CONG_CONTROL "tcp_available_congestion_control" no longer used */
+       { CTL_STR,      NET_TCP_ALLOWED_CONG_CONTROL,           "tcp_allowed_congestion_control" },
+       { CTL_INT,      NET_TCP_MAX_SSTHRESH,                   "tcp_max_ssthresh" },
+
+       { CTL_INT,      NET_IPV4_ICMP_ECHO_IGNORE_ALL,          "icmp_echo_ignore_all" },
+       { CTL_INT,      NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS,   "icmp_echo_ignore_broadcasts" },
+       { CTL_INT,      NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES,     "icmp_ignore_bogus_error_responses" },
+       { CTL_INT,      NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR,        "icmp_errors_use_inbound_ifaddr" },
+       { CTL_INT,      NET_IPV4_ICMP_RATELIMIT,                "icmp_ratelimit" },
+       { CTL_INT,      NET_IPV4_ICMP_RATEMASK,                 "icmp_ratemask" },
+
+       { CTL_INT,      NET_IPV4_IPFRAG_HIGH_THRESH,            "ipfrag_high_thresh" },
+       { CTL_INT,      NET_IPV4_IPFRAG_LOW_THRESH,             "ipfrag_low_thresh" },
+       { CTL_INT,      NET_IPV4_IPFRAG_TIME,                   "ipfrag_time" },
+
+       { CTL_INT,      NET_IPV4_IPFRAG_SECRET_INTERVAL,        "ipfrag_secret_interval" },
+       /* NET_IPV4_IPFRAG_MAX_DIST "ipfrag_max_dist" no longer used */
+
+       { CTL_INT,      2088 /* NET_IPQ_QMAX */,                "ip_queue_maxlen" },
+
+       /* NET_TCP_DEFAULT_WIN_SCALE unused */
+       /* NET_TCP_BIC_BETA unused */
+       /* NET_IPV4_TCP_MAX_KA_PROBES unused */
+       /* NET_IPV4_IP_MASQ_DEBUG unused */
+       /* NET_TCP_SYN_TAILDROP unused */
+       /* NET_IPV4_ICMP_SOURCEQUENCH_RATE unused */
+       /* NET_IPV4_ICMP_DESTUNREACH_RATE unused */
+       /* NET_IPV4_ICMP_TIMEEXCEED_RATE unused */
+       /* NET_IPV4_ICMP_PARAMPROB_RATE unused */
+       /* NET_IPV4_ICMP_ECHOREPLY_RATE unused */
+       /* NET_IPV4_ALWAYS_DEFRAG unused */
+       {}
+};
+
+static const struct bin_table bin_net_ipx_table[] = {
+       { CTL_INT,      NET_IPX_PPROP_BROADCASTING,     "ipx_pprop_broadcasting" },
+       /* NET_IPX_FORWARDING unused */
+       {}
+};
+
+static const struct bin_table bin_net_atalk_table[] = {
+       { CTL_INT,      NET_ATALK_AARP_EXPIRY_TIME,             "aarp-expiry-time" },
+       { CTL_INT,      NET_ATALK_AARP_TICK_TIME,               "aarp-tick-time" },
+       { CTL_INT,      NET_ATALK_AARP_RETRANSMIT_LIMIT,        "aarp-retransmit-limit" },
+       { CTL_INT,      NET_ATALK_AARP_RESOLVE_TIME,            "aarp-resolve-time" },
+       {},
+};
+
+static const struct bin_table bin_net_netrom_table[] = {
+       { CTL_INT,      NET_NETROM_DEFAULT_PATH_QUALITY,                "default_path_quality" },
+       { CTL_INT,      NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER,      "obsolescence_count_initialiser" },
+       { CTL_INT,      NET_NETROM_NETWORK_TTL_INITIALISER,             "network_ttl_initialiser" },
+       { CTL_INT,      NET_NETROM_TRANSPORT_TIMEOUT,                   "transport_timeout" },
+       { CTL_INT,      NET_NETROM_TRANSPORT_MAXIMUM_TRIES,             "transport_maximum_tries" },
+       { CTL_INT,      NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY,         "transport_acknowledge_delay" },
+       { CTL_INT,      NET_NETROM_TRANSPORT_BUSY_DELAY,                "transport_busy_delay" },
+       { CTL_INT,      NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE,     "transport_requested_window_size" },
+       { CTL_INT,      NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT,       "transport_no_activity_timeout" },
+       { CTL_INT,      NET_NETROM_ROUTING_CONTROL,                     "routing_control" },
+       { CTL_INT,      NET_NETROM_LINK_FAILS_COUNT,                    "link_fails_count" },
+       { CTL_INT,      NET_NETROM_RESET,                               "reset" },
+       {}
+};
+
+static const struct bin_table bin_net_ax25_param_table[] = {
+       { CTL_INT,      NET_AX25_IP_DEFAULT_MODE,       "ip_default_mode" },
+       { CTL_INT,      NET_AX25_DEFAULT_MODE,          "ax25_default_mode" },
+       { CTL_INT,      NET_AX25_BACKOFF_TYPE,          "backoff_type" },
+       { CTL_INT,      NET_AX25_CONNECT_MODE,          "connect_mode" },
+       { CTL_INT,      NET_AX25_STANDARD_WINDOW,       "standard_window_size" },
+       { CTL_INT,      NET_AX25_EXTENDED_WINDOW,       "extended_window_size" },
+       { CTL_INT,      NET_AX25_T1_TIMEOUT,            "t1_timeout" },
+       { CTL_INT,      NET_AX25_T2_TIMEOUT,            "t2_timeout" },
+       { CTL_INT,      NET_AX25_T3_TIMEOUT,            "t3_timeout" },
+       { CTL_INT,      NET_AX25_IDLE_TIMEOUT,          "idle_timeout" },
+       { CTL_INT,      NET_AX25_N2,                    "maximum_retry_count" },
+       { CTL_INT,      NET_AX25_PACLEN,                "maximum_packet_length" },
+       { CTL_INT,      NET_AX25_PROTOCOL,              "protocol" },
+       { CTL_INT,      NET_AX25_DAMA_SLAVE_TIMEOUT,    "dama_slave_timeout" },
+       {}
+};
+
+static const struct bin_table bin_net_ax25_table[] = {
+       { CTL_DIR,      0, NULL, bin_net_ax25_param_table },
+       {}
+};
+
+static const struct bin_table bin_net_rose_table[] = {
+       { CTL_INT,      NET_ROSE_RESTART_REQUEST_TIMEOUT,       "restart_request_timeout" },
+       { CTL_INT,      NET_ROSE_CALL_REQUEST_TIMEOUT,          "call_request_timeout" },
+       { CTL_INT,      NET_ROSE_RESET_REQUEST_TIMEOUT,         "reset_request_timeout" },
+       { CTL_INT,      NET_ROSE_CLEAR_REQUEST_TIMEOUT,         "clear_request_timeout" },
+       { CTL_INT,      NET_ROSE_ACK_HOLD_BACK_TIMEOUT,         "acknowledge_hold_back_timeout" },
+       { CTL_INT,      NET_ROSE_ROUTING_CONTROL,               "routing_control" },
+       { CTL_INT,      NET_ROSE_LINK_FAIL_TIMEOUT,             "link_fail_timeout" },
+       { CTL_INT,      NET_ROSE_MAX_VCS,                       "maximum_virtual_circuits" },
+       { CTL_INT,      NET_ROSE_WINDOW_SIZE,                   "window_size" },
+       { CTL_INT,      NET_ROSE_NO_ACTIVITY_TIMEOUT,           "no_activity_timeout" },
+       {}
+};
+
+static const struct bin_table bin_net_ipv6_conf_var_table[] = {
+       { CTL_INT,      NET_IPV6_FORWARDING,                    "forwarding" },
+       { CTL_INT,      NET_IPV6_HOP_LIMIT,                     "hop_limit" },
+       { CTL_INT,      NET_IPV6_MTU,                           "mtu" },
+       { CTL_INT,      NET_IPV6_ACCEPT_RA,                     "accept_ra" },
+       { CTL_INT,      NET_IPV6_ACCEPT_REDIRECTS,              "accept_redirects" },
+       { CTL_INT,      NET_IPV6_AUTOCONF,                      "autoconf" },
+       { CTL_INT,      NET_IPV6_DAD_TRANSMITS,                 "dad_transmits" },
+       { CTL_INT,      NET_IPV6_RTR_SOLICITS,                  "router_solicitations" },
+       { CTL_INT,      NET_IPV6_RTR_SOLICIT_INTERVAL,          "router_solicitation_interval" },
+       { CTL_INT,      NET_IPV6_RTR_SOLICIT_DELAY,             "router_solicitation_delay" },
+       { CTL_INT,      NET_IPV6_USE_TEMPADDR,                  "use_tempaddr" },
+       { CTL_INT,      NET_IPV6_TEMP_VALID_LFT,                "temp_valid_lft" },
+       { CTL_INT,      NET_IPV6_TEMP_PREFERED_LFT,             "temp_prefered_lft" },
+       { CTL_INT,      NET_IPV6_REGEN_MAX_RETRY,               "regen_max_retry" },
+       { CTL_INT,      NET_IPV6_MAX_DESYNC_FACTOR,             "max_desync_factor" },
+       { CTL_INT,      NET_IPV6_MAX_ADDRESSES,                 "max_addresses" },
+       { CTL_INT,      NET_IPV6_FORCE_MLD_VERSION,             "force_mld_version" },
+       { CTL_INT,      NET_IPV6_ACCEPT_RA_DEFRTR,              "accept_ra_defrtr" },
+       { CTL_INT,      NET_IPV6_ACCEPT_RA_PINFO,               "accept_ra_pinfo" },
+       { CTL_INT,      NET_IPV6_ACCEPT_RA_RTR_PREF,            "accept_ra_rtr_pref" },
+       { CTL_INT,      NET_IPV6_RTR_PROBE_INTERVAL,            "router_probe_interval" },
+       { CTL_INT,      NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN,    "accept_ra_rt_info_max_plen" },
+       { CTL_INT,      NET_IPV6_PROXY_NDP,                     "proxy_ndp" },
+       { CTL_INT,      NET_IPV6_ACCEPT_SOURCE_ROUTE,           "accept_source_route" },
+       {}
+};
+
+static const struct bin_table bin_net_ipv6_conf_table[] = {
+       { CTL_DIR,      NET_PROTO_CONF_ALL,             "all",  bin_net_ipv6_conf_var_table },
+       { CTL_DIR,      NET_PROTO_CONF_DEFAULT,         "default", bin_net_ipv6_conf_var_table },
+       { CTL_DIR,      0, NULL, bin_net_ipv6_conf_var_table },
+       {}
+};
+
+static const struct bin_table bin_net_ipv6_route_table[] = {
+       /* NET_IPV6_ROUTE_FLUSH "flush"  no longer used */
+       { CTL_INT,      NET_IPV6_ROUTE_GC_THRESH,               "gc_thresh" },
+       { CTL_INT,      NET_IPV6_ROUTE_MAX_SIZE,                "max_size" },
+       { CTL_INT,      NET_IPV6_ROUTE_GC_MIN_INTERVAL,         "gc_min_interval" },
+       { CTL_INT,      NET_IPV6_ROUTE_GC_TIMEOUT,              "gc_timeout" },
+       { CTL_INT,      NET_IPV6_ROUTE_GC_INTERVAL,             "gc_interval" },
+       { CTL_INT,      NET_IPV6_ROUTE_GC_ELASTICITY,           "gc_elasticity" },
+       { CTL_INT,      NET_IPV6_ROUTE_MTU_EXPIRES,             "mtu_expires" },
+       { CTL_INT,      NET_IPV6_ROUTE_MIN_ADVMSS,              "min_adv_mss" },
+       { CTL_INT,      NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS,      "gc_min_interval_ms" },
+       {}
+};
+
+static const struct bin_table bin_net_ipv6_icmp_table[] = {
+       { CTL_INT,      NET_IPV6_ICMP_RATELIMIT,        "ratelimit" },
+       {}
+};
+
+static const struct bin_table bin_net_ipv6_table[] = {
+       { CTL_DIR,      NET_IPV6_CONF,          "conf",         bin_net_ipv6_conf_table },
+       { CTL_DIR,      NET_IPV6_NEIGH,         "neigh",        bin_net_neigh_table },
+       { CTL_DIR,      NET_IPV6_ROUTE,         "route",        bin_net_ipv6_route_table },
+       { CTL_DIR,      NET_IPV6_ICMP,          "icmp",         bin_net_ipv6_icmp_table },
+       { CTL_INT,      NET_IPV6_BINDV6ONLY,            "bindv6only" },
+       { CTL_INT,      NET_IPV6_IP6FRAG_HIGH_THRESH,   "ip6frag_high_thresh" },
+       { CTL_INT,      NET_IPV6_IP6FRAG_LOW_THRESH,    "ip6frag_low_thresh" },
+       { CTL_INT,      NET_IPV6_IP6FRAG_TIME,          "ip6frag_time" },
+       { CTL_INT,      NET_IPV6_IP6FRAG_SECRET_INTERVAL,       "ip6frag_secret_interval" },
+       { CTL_INT,      NET_IPV6_MLD_MAX_MSF,           "mld_max_msf" },
+       { CTL_INT,      2088 /* IPQ_QMAX */,            "ip6_queue_maxlen" },
+       {}
+};
+
+static const struct bin_table bin_net_x25_table[] = {
+       { CTL_INT,      NET_X25_RESTART_REQUEST_TIMEOUT,        "restart_request_timeout" },
+       { CTL_INT,      NET_X25_CALL_REQUEST_TIMEOUT,           "call_request_timeout" },
+       { CTL_INT,      NET_X25_RESET_REQUEST_TIMEOUT,  "reset_request_timeout" },
+       { CTL_INT,      NET_X25_CLEAR_REQUEST_TIMEOUT,  "clear_request_timeout" },
+       { CTL_INT,      NET_X25_ACK_HOLD_BACK_TIMEOUT,  "acknowledgement_hold_back_timeout" },
+       { CTL_INT,      NET_X25_FORWARD,                        "x25_forward" },
+       {}
+};
+
+static const struct bin_table bin_net_tr_table[] = {
+       { CTL_INT,      NET_TR_RIF_TIMEOUT,     "rif_timeout" },
+       {}
+};
+
+
+static const struct bin_table bin_net_decnet_conf_vars[] = {
+       { CTL_INT,      NET_DECNET_CONF_DEV_FORWARDING, "forwarding" },
+       { CTL_INT,      NET_DECNET_CONF_DEV_PRIORITY,   "priority" },
+       { CTL_INT,      NET_DECNET_CONF_DEV_T2,         "t2" },
+       { CTL_INT,      NET_DECNET_CONF_DEV_T3,         "t3" },
+       {}
+};
+
+static const struct bin_table bin_net_decnet_conf[] = {
+       { CTL_DIR, NET_DECNET_CONF_ETHER,    "ethernet", bin_net_decnet_conf_vars },
+       { CTL_DIR, NET_DECNET_CONF_GRE,      "ipgre",    bin_net_decnet_conf_vars },
+       { CTL_DIR, NET_DECNET_CONF_X25,      "x25",      bin_net_decnet_conf_vars },
+       { CTL_DIR, NET_DECNET_CONF_PPP,      "ppp",      bin_net_decnet_conf_vars },
+       { CTL_DIR, NET_DECNET_CONF_DDCMP,    "ddcmp",    bin_net_decnet_conf_vars },
+       { CTL_DIR, NET_DECNET_CONF_LOOPBACK, "loopback", bin_net_decnet_conf_vars },
+       { CTL_DIR, 0,                        NULL,       bin_net_decnet_conf_vars },
+       {}
+};
+
+static const struct bin_table bin_net_decnet_table[] = {
+       { CTL_DIR,      NET_DECNET_CONF,                "conf", bin_net_decnet_conf },
+       { CTL_DNADR,    NET_DECNET_NODE_ADDRESS,        "node_address" },
+       { CTL_STR,      NET_DECNET_NODE_NAME,           "node_name" },
+       { CTL_STR,      NET_DECNET_DEFAULT_DEVICE,      "default_device" },
+       { CTL_INT,      NET_DECNET_TIME_WAIT,           "time_wait" },
+       { CTL_INT,      NET_DECNET_DN_COUNT,            "dn_count" },
+       { CTL_INT,      NET_DECNET_DI_COUNT,            "di_count" },
+       { CTL_INT,      NET_DECNET_DR_COUNT,            "dr_count" },
+       { CTL_INT,      NET_DECNET_DST_GC_INTERVAL,     "dst_gc_interval" },
+       { CTL_INT,      NET_DECNET_NO_FC_MAX_CWND,      "no_fc_max_cwnd" },
+       { CTL_INT,      NET_DECNET_MEM,         "decnet_mem" },
+       { CTL_INT,      NET_DECNET_RMEM,                "decnet_rmem" },
+       { CTL_INT,      NET_DECNET_WMEM,                "decnet_wmem" },
+       { CTL_INT,      NET_DECNET_DEBUG_LEVEL, "debug" },
+       {}
+};
+
+static const struct bin_table bin_net_sctp_table[] = {
+       { CTL_INT,      NET_SCTP_RTO_INITIAL,           "rto_initial" },
+       { CTL_INT,      NET_SCTP_RTO_MIN,               "rto_min" },
+       { CTL_INT,      NET_SCTP_RTO_MAX,               "rto_max" },
+       { CTL_INT,      NET_SCTP_RTO_ALPHA,             "rto_alpha_exp_divisor" },
+       { CTL_INT,      NET_SCTP_RTO_BETA,              "rto_beta_exp_divisor" },
+       { CTL_INT,      NET_SCTP_VALID_COOKIE_LIFE,     "valid_cookie_life" },
+       { CTL_INT,      NET_SCTP_ASSOCIATION_MAX_RETRANS,       "association_max_retrans" },
+       { CTL_INT,      NET_SCTP_PATH_MAX_RETRANS,      "path_max_retrans" },
+       { CTL_INT,      NET_SCTP_MAX_INIT_RETRANSMITS,  "max_init_retransmits" },
+       { CTL_INT,      NET_SCTP_HB_INTERVAL,           "hb_interval" },
+       { CTL_INT,      NET_SCTP_PRESERVE_ENABLE,       "cookie_preserve_enable" },
+       { CTL_INT,      NET_SCTP_MAX_BURST,             "max_burst" },
+       { CTL_INT,      NET_SCTP_ADDIP_ENABLE,          "addip_enable" },
+       { CTL_INT,      NET_SCTP_PRSCTP_ENABLE,         "prsctp_enable" },
+       { CTL_INT,      NET_SCTP_SNDBUF_POLICY,         "sndbuf_policy" },
+       { CTL_INT,      NET_SCTP_SACK_TIMEOUT,          "sack_timeout" },
+       { CTL_INT,      NET_SCTP_RCVBUF_POLICY,         "rcvbuf_policy" },
+       {}
+};
+
+static const struct bin_table bin_net_llc_llc2_timeout_table[] = {
+       { CTL_INT,      NET_LLC2_ACK_TIMEOUT,   "ack" },
+       { CTL_INT,      NET_LLC2_P_TIMEOUT,     "p" },
+       { CTL_INT,      NET_LLC2_REJ_TIMEOUT,   "rej" },
+       { CTL_INT,      NET_LLC2_BUSY_TIMEOUT,  "busy" },
+       {}
+};
+
+static const struct bin_table bin_net_llc_station_table[] = {
+       { CTL_INT,      NET_LLC_STATION_ACK_TIMEOUT,    "ack_timeout" },
+       {}
+};
+
+static const struct bin_table bin_net_llc_llc2_table[] = {
+       { CTL_DIR,      NET_LLC2,               "timeout",      bin_net_llc_llc2_timeout_table },
+       {}
+};
+
+static const struct bin_table bin_net_llc_table[] = {
+       { CTL_DIR,      NET_LLC2,               "llc2",         bin_net_llc_llc2_table },
+       { CTL_DIR,      NET_LLC_STATION,        "station",      bin_net_llc_station_table },
+       {}
+};
+
+static const struct bin_table bin_net_netfilter_table[] = {
+       { CTL_INT,      NET_NF_CONNTRACK_MAX,                   "nf_conntrack_max" },
+       /* NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT "nf_conntrack_tcp_timeout_syn_sent" no longer used */
+       /* NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV "nf_conntrack_tcp_timeout_syn_recv" no longer used */
+       /* NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED "nf_conntrack_tcp_timeout_established" no longer used */
+       /* NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT "nf_conntrack_tcp_timeout_fin_wait" no longer used */
+       /* NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT "nf_conntrack_tcp_timeout_close_wait" no longer used */
+       /* NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK "nf_conntrack_tcp_timeout_last_ack" no longer used */
+       /* NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT "nf_conntrack_tcp_timeout_time_wait" no longer used */
+       /* NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE "nf_conntrack_tcp_timeout_close" no longer used */
+       /* NET_NF_CONNTRACK_UDP_TIMEOUT "nf_conntrack_udp_timeout" no longer used */
+       /* NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM "nf_conntrack_udp_timeout_stream" no longer used */
+       /* NET_NF_CONNTRACK_ICMP_TIMEOUT "nf_conntrack_icmp_timeout" no longer used */
+       /* NET_NF_CONNTRACK_GENERIC_TIMEOUT "nf_conntrack_generic_timeout" no longer used */
+       { CTL_INT,      NET_NF_CONNTRACK_BUCKETS,               "nf_conntrack_buckets" },
+       { CTL_INT,      NET_NF_CONNTRACK_LOG_INVALID,           "nf_conntrack_log_invalid" },
+       /* NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS "nf_conntrack_tcp_timeout_max_retrans" no longer used */
+       { CTL_INT,      NET_NF_CONNTRACK_TCP_LOOSE,             "nf_conntrack_tcp_loose" },
+       { CTL_INT,      NET_NF_CONNTRACK_TCP_BE_LIBERAL,        "nf_conntrack_tcp_be_liberal" },
+       { CTL_INT,      NET_NF_CONNTRACK_TCP_MAX_RETRANS,       "nf_conntrack_tcp_max_retrans" },
+       /* NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED "nf_conntrack_sctp_timeout_closed" no longer used */
+       /* NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT "nf_conntrack_sctp_timeout_cookie_wait" no longer used */
+       /* NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED "nf_conntrack_sctp_timeout_cookie_echoed" no longer used */
+       /* NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED "nf_conntrack_sctp_timeout_established" no longer used */
+       /* NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT "nf_conntrack_sctp_timeout_shutdown_sent" no longer used */
+       /* NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD "nf_conntrack_sctp_timeout_shutdown_recd" no longer used */
+       /* NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT "nf_conntrack_sctp_timeout_shutdown_ack_sent" no longer used */
+       { CTL_INT,      NET_NF_CONNTRACK_COUNT,                 "nf_conntrack_count" },
+       /* NET_NF_CONNTRACK_ICMPV6_TIMEOUT "nf_conntrack_icmpv6_timeout" no longer used */
+       /* NET_NF_CONNTRACK_FRAG6_TIMEOUT "nf_conntrack_frag6_timeout" no longer used */
+       { CTL_INT,      NET_NF_CONNTRACK_FRAG6_LOW_THRESH,      "nf_conntrack_frag6_low_thresh" },
+       { CTL_INT,      NET_NF_CONNTRACK_FRAG6_HIGH_THRESH,     "nf_conntrack_frag6_high_thresh" },
+       { CTL_INT,      NET_NF_CONNTRACK_CHECKSUM,              "nf_conntrack_checksum" },
+
+       {}
+};
+
+static const struct bin_table bin_net_irda_table[] = {
+       { CTL_INT,      NET_IRDA_DISCOVERY,             "discovery" },
+       { CTL_STR,      NET_IRDA_DEVNAME,               "devname" },
+       { CTL_INT,      NET_IRDA_DEBUG,                 "debug" },
+       { CTL_INT,      NET_IRDA_FAST_POLL,             "fast_poll_increase" },
+       { CTL_INT,      NET_IRDA_DISCOVERY_SLOTS,       "discovery_slots" },
+       { CTL_INT,      NET_IRDA_DISCOVERY_TIMEOUT,     "discovery_timeout" },
+       { CTL_INT,      NET_IRDA_SLOT_TIMEOUT,          "slot_timeout" },
+       { CTL_INT,      NET_IRDA_MAX_BAUD_RATE,         "max_baud_rate" },
+       { CTL_INT,      NET_IRDA_MIN_TX_TURN_TIME,      "min_tx_turn_time" },
+       { CTL_INT,      NET_IRDA_MAX_TX_DATA_SIZE,      "max_tx_data_size" },
+       { CTL_INT,      NET_IRDA_MAX_TX_WINDOW,         "max_tx_window" },
+       { CTL_INT,      NET_IRDA_MAX_NOREPLY_TIME,      "max_noreply_time" },
+       { CTL_INT,      NET_IRDA_WARN_NOREPLY_TIME,     "warn_noreply_time" },
+       { CTL_INT,      NET_IRDA_LAP_KEEPALIVE_TIME,    "lap_keepalive_time" },
+       {}
+};
+
+static const struct bin_table bin_net_table[] = {
+       { CTL_DIR,      NET_CORE,               "core",         bin_net_core_table },
+       /* NET_ETHER not used */
+       /* NET_802 not used */
+       { CTL_DIR,      NET_UNIX,               "unix",         bin_net_unix_table },
+       { CTL_DIR,      NET_IPV4,               "ipv4",         bin_net_ipv4_table },
+       { CTL_DIR,      NET_IPX,                "ipx",          bin_net_ipx_table },
+       { CTL_DIR,      NET_ATALK,              "appletalk",    bin_net_atalk_table },
+       { CTL_DIR,      NET_NETROM,             "netrom",       bin_net_netrom_table },
+       { CTL_DIR,      NET_AX25,               "ax25",         bin_net_ax25_table },
+       /*  NET_BRIDGE "bridge" no longer used */
+       { CTL_DIR,      NET_ROSE,               "rose",         bin_net_rose_table },
+       { CTL_DIR,      NET_IPV6,               "ipv6",         bin_net_ipv6_table },
+       { CTL_DIR,      NET_X25,                "x25",          bin_net_x25_table },
+       { CTL_DIR,      NET_TR,                 "token-ring",   bin_net_tr_table },
+       { CTL_DIR,      NET_DECNET,             "decnet",       bin_net_decnet_table },
+       /*  NET_ECONET not used */
+       { CTL_DIR,      NET_SCTP,               "sctp",         bin_net_sctp_table },
+       { CTL_DIR,      NET_LLC,                "llc",          bin_net_llc_table },
+       { CTL_DIR,      NET_NETFILTER,          "netfilter",    bin_net_netfilter_table },
+       /* NET_DCCP "dccp" no longer used */
+       { CTL_DIR,      NET_IRDA,               "irda",         bin_net_irda_table },
+       { CTL_INT,      2089,                   "nf_conntrack_max" },
+       {}
+};
+
+static const struct bin_table bin_fs_quota_table[] = {
+       { CTL_INT,      FS_DQ_LOOKUPS,          "lookups" },
+       { CTL_INT,      FS_DQ_DROPS,            "drops" },
+       { CTL_INT,      FS_DQ_READS,            "reads" },
+       { CTL_INT,      FS_DQ_WRITES,           "writes" },
+       { CTL_INT,      FS_DQ_CACHE_HITS,       "cache_hits" },
+       { CTL_INT,      FS_DQ_ALLOCATED,        "allocated_dquots" },
+       { CTL_INT,      FS_DQ_FREE,             "free_dquots" },
+       { CTL_INT,      FS_DQ_SYNCS,            "syncs" },
+       { CTL_INT,      FS_DQ_WARNINGS,         "warnings" },
+       {}
+};
+
+static const struct bin_table bin_fs_xfs_table[] = {
+       { CTL_INT,      XFS_SGID_INHERIT,       "irix_sgid_inherit" },
+       { CTL_INT,      XFS_SYMLINK_MODE,       "irix_symlink_mode" },
+       { CTL_INT,      XFS_PANIC_MASK,         "panic_mask" },
+
+       { CTL_INT,      XFS_ERRLEVEL,           "error_level" },
+       { CTL_INT,      XFS_SYNCD_TIMER,        "xfssyncd_centisecs" },
+       { CTL_INT,      XFS_INHERIT_SYNC,       "inherit_sync" },
+       { CTL_INT,      XFS_INHERIT_NODUMP,     "inherit_nodump" },
+       { CTL_INT,      XFS_INHERIT_NOATIME,    "inherit_noatime" },
+       { CTL_INT,      XFS_BUF_TIMER,          "xfsbufd_centisecs" },
+       { CTL_INT,      XFS_BUF_AGE,            "age_buffer_centisecs" },
+       { CTL_INT,      XFS_INHERIT_NOSYM,      "inherit_nosymlinks" },
+       { CTL_INT,      XFS_ROTORSTEP,  "rotorstep" },
+       { CTL_INT,      XFS_INHERIT_NODFRG,     "inherit_nodefrag" },
+       { CTL_INT,      XFS_FILESTREAM_TIMER,   "filestream_centisecs" },
+       { CTL_INT,      XFS_STATS_CLEAR,        "stats_clear" },
+       {}
+};
+
+static const struct bin_table bin_fs_ocfs2_nm_table[] = {
+       { CTL_STR,      1, "hb_ctl_path" },
+       {}
+};
+
+static const struct bin_table bin_fs_ocfs2_table[] = {
+       { CTL_DIR,      1,      "nm",   bin_fs_ocfs2_nm_table },
+       {}
+};
+
+static const struct bin_table bin_inotify_table[] = {
+       { CTL_INT,      INOTIFY_MAX_USER_INSTANCES,     "max_user_instances" },
+       { CTL_INT,      INOTIFY_MAX_USER_WATCHES,       "max_user_watches" },
+       { CTL_INT,      INOTIFY_MAX_QUEUED_EVENTS,      "max_queued_events" },
+       {}
+};
+
+static const struct bin_table bin_fs_table[] = {
+       { CTL_INT,      FS_NRINODE,             "inode-nr" },
+       { CTL_INT,      FS_STATINODE,           "inode-state" },
+       /* FS_MAXINODE unused */
+       /* FS_NRDQUOT unused */
+       /* FS_MAXDQUOT unused */
+       /* FS_NRFILE "file-nr" no longer used */
+       { CTL_INT,      FS_MAXFILE,             "file-max" },
+       { CTL_INT,      FS_DENTRY,              "dentry-state" },
+       /* FS_NRSUPER unused */
+       /* FS_MAXUPSER unused */
+       { CTL_INT,      FS_OVERFLOWUID,         "overflowuid" },
+       { CTL_INT,      FS_OVERFLOWGID,         "overflowgid" },
+       { CTL_INT,      FS_LEASES,              "leases-enable" },
+       { CTL_INT,      FS_DIR_NOTIFY,          "dir-notify-enable" },
+       { CTL_INT,      FS_LEASE_TIME,          "lease-break-time" },
+       { CTL_DIR,      FS_DQSTATS,             "quota",        bin_fs_quota_table },
+       { CTL_DIR,      FS_XFS,                 "xfs",          bin_fs_xfs_table },
+       { CTL_ULONG,    FS_AIO_NR,              "aio-nr" },
+       { CTL_ULONG,    FS_AIO_MAX_NR,          "aio-max-nr" },
+       { CTL_DIR,      FS_INOTIFY,             "inotify",      bin_inotify_table },
+       { CTL_DIR,      FS_OCFS2,               "ocfs2",        bin_fs_ocfs2_table },
+       { CTL_INT,      KERN_SETUID_DUMPABLE,   "suid_dumpable" },
+       {}
+};
+
+static const struct bin_table bin_ipmi_table[] = {
+       { CTL_INT,      DEV_IPMI_POWEROFF_POWERCYCLE,   "poweroff_powercycle" },
+       {}
+};
+
+static const struct bin_table bin_mac_hid_files[] = {
+       /* DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES unused */
+       /* DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES unused */
+       { CTL_INT,      DEV_MAC_HID_MOUSE_BUTTON_EMULATION,     "mouse_button_emulation" },
+       { CTL_INT,      DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE,      "mouse_button2_keycode" },
+       { CTL_INT,      DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE,      "mouse_button3_keycode" },
+       /* DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES unused */
+       {}
+};
+
+static const struct bin_table bin_raid_table[] = {
+       { CTL_INT,      DEV_RAID_SPEED_LIMIT_MIN,       "speed_limit_min" },
+       { CTL_INT,      DEV_RAID_SPEED_LIMIT_MAX,       "speed_limit_max" },
+       {}
+};
+
+static const struct bin_table bin_scsi_table[] = {
+       { CTL_INT, DEV_SCSI_LOGGING_LEVEL, "logging_level" },
+       {}
+};
+
+static const struct bin_table bin_dev_table[] = {
+       /* DEV_CDROM    "cdrom" no longer used */
+       /* DEV_HWMON unused */
+       /* DEV_PARPORT  "parport" no longer used */
+       { CTL_DIR,      DEV_RAID,       "raid",         bin_raid_table },
+       { CTL_DIR,      DEV_MAC_HID,    "mac_hid",      bin_mac_hid_files },
+       { CTL_DIR,      DEV_SCSI,       "scsi",         bin_scsi_table },
+       { CTL_DIR,      DEV_IPMI,       "ipmi",         bin_ipmi_table },
+       {}
+};
+
+static const struct bin_table bin_bus_isa_table[] = {
+       { CTL_INT,      BUS_ISA_MEM_BASE,       "membase" },
+       { CTL_INT,      BUS_ISA_PORT_BASE,      "portbase" },
+       { CTL_INT,      BUS_ISA_PORT_SHIFT,     "portshift" },
+       {}
+};
+
+static const struct bin_table bin_bus_table[] = {
+       { CTL_DIR,      CTL_BUS_ISA,    "isa",  bin_bus_isa_table },
+       {}
+};
+
+
+static const struct bin_table bin_s390dbf_table[] = {
+       { CTL_INT,      5678 /* CTL_S390DBF_STOPPABLE */, "debug_stoppable" },
+       { CTL_INT,      5679 /* CTL_S390DBF_ACTIVE */,    "debug_active" },
+       {}
+};
+
+static const struct bin_table bin_sunrpc_table[] = {
+       /* CTL_RPCDEBUG "rpc_debug"  no longer used */
+       /* CTL_NFSDEBUG "nfs_debug"  no longer used */
+       /* CTL_NFSDDEBUG "nfsd_debug" no longer used  */
+       /* CTL_NLMDEBUG "nlm_debug" no longer used */
+
+       { CTL_INT,      CTL_SLOTTABLE_UDP,      "udp_slot_table_entries" },
+       { CTL_INT,      CTL_SLOTTABLE_TCP,      "tcp_slot_table_entries" },
+       { CTL_INT,      CTL_MIN_RESVPORT,       "min_resvport" },
+       { CTL_INT,      CTL_MAX_RESVPORT,       "max_resvport" },
+       {}
+};
+
+static const struct bin_table bin_pm_table[] = {
+       /* frv specific */
+       /* 1 == CTL_PM_SUSPEND  "suspend"  no longer used" */
+       { CTL_INT,      2 /* CTL_PM_CMODE */,           "cmode" },
+       { CTL_INT,      3 /* CTL_PM_P0 */,              "p0" },
+       { CTL_INT,      4 /* CTL_PM_CM */,              "cm" },
+       {}
+};
+
+static const struct bin_table bin_root_table[] = {
+       { CTL_DIR,      CTL_KERN,       "kernel",       bin_kern_table },
+       { CTL_DIR,      CTL_VM,         "vm",           bin_vm_table },
+       { CTL_DIR,      CTL_NET,        "net",          bin_net_table },
+       /* CTL_PROC not used */
+       { CTL_DIR,      CTL_FS,         "fs",           bin_fs_table },
+       /* CTL_DEBUG "debug" no longer used */
+       { CTL_DIR,      CTL_DEV,        "dev",          bin_dev_table },
+       { CTL_DIR,      CTL_BUS,        "bus",          bin_bus_table },
+       { CTL_DIR,      CTL_ABI,        "abi" },
+       /* CTL_CPU not used */
+       /* CTL_ARLAN "arlan" no longer used */
+       { CTL_DIR,      CTL_S390DBF,    "s390dbf",      bin_s390dbf_table },
+       { CTL_DIR,      CTL_SUNRPC,     "sunrpc",       bin_sunrpc_table },
+       { CTL_DIR,      CTL_PM,         "pm",           bin_pm_table },
+       {}
+};
+
+static ssize_t bin_dir(struct file *file,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen)
+{
+       return -ENOTDIR;
+}
+
+
+static ssize_t bin_string(struct file *file,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen)
+{
+       ssize_t result, copied = 0;
+
+       if (oldval && oldlen) {
+               char __user *lastp;
+               loff_t pos = 0;
+               int ch;
+
+               result = vfs_read(file, oldval, oldlen, &pos);
+               if (result < 0)
+                       goto out;
+
+               copied = result;
+               lastp = oldval + copied - 1;
+
+               result = -EFAULT;
+               if (get_user(ch, lastp))
+                       goto out;
+
+               /* Trim off the trailing newline */
+               if (ch == '\n') {
+                       result = -EFAULT;
+                       if (put_user('\0', lastp))
+                               goto out;
+                       copied -= 1;
+               }
+       }
+
+       if (newval && newlen) {
+               loff_t pos = 0;
+
+               result = vfs_write(file, newval, newlen, &pos);
+               if (result < 0)
+                       goto out;
+       }
+
+       result = copied;
+out:
+       return result;
+}
+
+static ssize_t bin_intvec(struct file *file,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen)
+{
+       mm_segment_t old_fs = get_fs();
+       ssize_t copied = 0;
+       char *buffer;
+       ssize_t result;
+
+       result = -ENOMEM;
+       buffer = kmalloc(BUFSZ, GFP_KERNEL);
+       if (!buffer)
+               goto out;
+
+       if (oldval && oldlen) {
+               unsigned __user *vec = oldval;
+               size_t length = oldlen / sizeof(*vec);
+               loff_t pos = 0;
+               char *str, *end;
+               int i;
+
+               set_fs(KERNEL_DS);
+               result = vfs_read(file, buffer, BUFSZ - 1, &pos);
+               set_fs(old_fs);
+               if (result < 0)
+                       goto out_kfree;
+
+               str = buffer;
+               end = str + result;
+               *end++ = '\0';
+               for (i = 0; i < length; i++) {
+                       unsigned long value;
+
+                       value = simple_strtoul(str, &str, 10);
+                       while (isspace(*str))
+                               str++;
+                       
+                       result = -EFAULT;
+                       if (put_user(value, vec + i))
+                               goto out_kfree;
+
+                       copied += sizeof(*vec);
+                       if (!isdigit(*str))
+                               break;
+               }
+       }
+
+       if (newval && newlen) {
+               unsigned __user *vec = newval;
+               size_t length = newlen / sizeof(*vec);
+               loff_t pos = 0;
+               char *str, *end;
+               int i;
+
+               str = buffer;
+               end = str + BUFSZ;
+               for (i = 0; i < length; i++) {
+                       unsigned long value;
+
+                       result = -EFAULT;
+                       if (get_user(value, vec + i))
+                               goto out_kfree;
+
+                       str += snprintf(str, end - str, "%lu\t", value);
+               }
+
+               set_fs(KERNEL_DS);
+               result = vfs_write(file, buffer, str - buffer, &pos);
+               set_fs(old_fs);
+               if (result < 0)
+                       goto out_kfree;
+       }
+       result = copied;
+out_kfree:
+       kfree(buffer);
+out:
+       return result;
+}
+
+static ssize_t bin_ulongvec(struct file *file,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen)
+{
+       mm_segment_t old_fs = get_fs();
+       ssize_t copied = 0;
+       char *buffer;
+       ssize_t result;
+
+       result = -ENOMEM;
+       buffer = kmalloc(BUFSZ, GFP_KERNEL);
+       if (!buffer)
+               goto out;
+
+       if (oldval && oldlen) {
+               unsigned long __user *vec = oldval;
+               size_t length = oldlen / sizeof(*vec);
+               loff_t pos = 0;
+               char *str, *end;
+               int i;
+
+               set_fs(KERNEL_DS);
+               result = vfs_read(file, buffer, BUFSZ - 1, &pos);
+               set_fs(old_fs);
+               if (result < 0)
+                       goto out_kfree;
+
+               str = buffer;
+               end = str + result;
+               *end++ = '\0';
+               for (i = 0; i < length; i++) {
+                       unsigned long value;
+
+                       value = simple_strtoul(str, &str, 10);
+                       while (isspace(*str))
+                               str++;
+                       
+                       result = -EFAULT;
+                       if (put_user(value, vec + i))
+                               goto out_kfree;
+
+                       copied += sizeof(*vec);
+                       if (!isdigit(*str))
+                               break;
+               }
+       }
+
+       if (newval && newlen) {
+               unsigned long __user *vec = newval;
+               size_t length = newlen / sizeof(*vec);
+               loff_t pos = 0;
+               char *str, *end;
+               int i;
+
+               str = buffer;
+               end = str + BUFSZ;
+               for (i = 0; i < length; i++) {
+                       unsigned long value;
+
+                       result = -EFAULT;
+                       if (get_user(value, vec + i))
+                               goto out_kfree;
+
+                       str += snprintf(str, end - str, "%lu\t", value);
+               }
+
+               set_fs(KERNEL_DS);
+               result = vfs_write(file, buffer, str - buffer, &pos);
+               set_fs(old_fs);
+               if (result < 0)
+                       goto out_kfree;
+       }
+       result = copied;
+out_kfree:
+       kfree(buffer);
+out:
+       return result;
+}
+
+static unsigned hex_value(int ch)
+{
+       return isdigit(ch) ? ch - '0' : ((ch | 0x20) - 'a') + 10;
+}
+
+static ssize_t bin_uuid(struct file *file,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen)
+{
+       mm_segment_t old_fs = get_fs();
+       ssize_t result, copied = 0;
+
+       /* Only supports reads */
+       if (oldval && oldlen) {
+               loff_t pos = 0;
+               char buf[40], *str = buf;
+               unsigned char uuid[16];
+               int i;
+
+               set_fs(KERNEL_DS);
+               result = vfs_read(file, buf, sizeof(buf) - 1, &pos);
+               set_fs(old_fs);
+               if (result < 0)
+                       goto out;
+
+               buf[result] = '\0';
+
+               /* Convert the uuid to from a string to binary */
+               for (i = 0; i < 16; i++) {
+                       result = -EIO;
+                       if (!isxdigit(str[0]) || !isxdigit(str[1]))
+                               goto out;
+
+                       uuid[i] = (hex_value(str[0]) << 4) | hex_value(str[1]);
+                       str += 2;
+                       if (*str == '-')
+                               str++;
+               }
+
+               if (oldlen > 16)
+                       oldlen = 16;
+
+               result = -EFAULT;
+               if (copy_to_user(oldval, uuid, oldlen))
+                       goto out;
+
+               copied = oldlen;
+       }
+       result = copied;
+out:
+       return result;
+}
+
+static ssize_t bin_dn_node_address(struct file *file,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen)
+{
+       mm_segment_t old_fs = get_fs();
+       ssize_t result, copied = 0;
+
+       if (oldval && oldlen) {
+               loff_t pos = 0;
+               char buf[15], *nodep;
+               unsigned long area, node;
+               __le16 dnaddr;
+
+               set_fs(KERNEL_DS);
+               result = vfs_read(file, buf, sizeof(buf) - 1, &pos);
+               set_fs(old_fs);
+               if (result < 0)
+                       goto out;
+
+               buf[result] = '\0';
+
+               /* Convert the decnet addresss to binary */
+               result = -EIO;
+               nodep = strchr(buf, '.') + 1;
+               if (!nodep)
+                       goto out;
+
+               area = simple_strtoul(buf, NULL, 10);
+               node = simple_strtoul(nodep, NULL, 10);
+
+               result = -EIO;
+               if ((area > 63)||(node > 1023))
+                       goto out;
+
+               dnaddr = cpu_to_le16((area << 10) | node);
+
+               result = -EFAULT;
+               if (put_user(dnaddr, (__le16 __user *)oldval))
+                       goto out;
+
+               copied = sizeof(dnaddr);
+       }
+
+       if (newval && newlen) {
+               loff_t pos = 0;
+               __le16 dnaddr;
+               char buf[15];
+               int len;
+
+               result = -EINVAL;
+               if (newlen != sizeof(dnaddr))
+                       goto out;
+
+               result = -EFAULT;
+               if (get_user(dnaddr, (__le16 __user *)newval))
+                       goto out;
+
+               len = snprintf(buf, sizeof(buf), "%hu.%hu",
+                               le16_to_cpu(dnaddr) >> 10,
+                               le16_to_cpu(dnaddr) & 0x3ff);
+
+               set_fs(KERNEL_DS);
+               result = vfs_write(file, buf, len, &pos);
+               set_fs(old_fs);
+               if (result < 0)
+                       goto out;
+       }
+
+       result = copied;
+out:
+       return result;
+}
+
+static const struct bin_table *get_sysctl(const int *name, int nlen, char *path)
+{
+       const struct bin_table *table = &bin_root_table[0];
+       int ctl_name;
+
+       /* The binary sysctl tables have a small maximum depth so
+        * there is no danger of overflowing our path as it PATH_MAX
+        * bytes long.
+        */
+       memcpy(path, "sys/", 4);
+       path += 4;
+
+repeat:
+       if (!nlen)
+               return ERR_PTR(-ENOTDIR);
+       ctl_name = *name;
+       name++;
+       nlen--;
+       for ( ; table->convert; table++) {
+               int len = 0;
+
+               /*
+                * For a wild card entry map from ifindex to network
+                * device name.
+                */
+               if (!table->ctl_name) {
+#ifdef CONFIG_NET
+                       struct net *net = current->nsproxy->net_ns;
+                       struct net_device *dev;
+                       dev = dev_get_by_index(net, ctl_name);
+                       if (dev) {
+                               len = strlen(dev->name);
+                               memcpy(path, dev->name, len);
+                               dev_put(dev);
+                       }
+#endif
+               /* Use the well known sysctl number to proc name mapping */
+               } else if (ctl_name == table->ctl_name) {
+                       len = strlen(table->procname);
+                       memcpy(path, table->procname, len);
+               }
+               if (len) {
+                       path += len;
+                       if (table->child) {
+                               *path++ = '/';
+                               table = table->child;
+                               goto repeat;
+                       }
+                       *path = '\0';
+                       return table;
+               }
+       }
+       return ERR_PTR(-ENOTDIR);
+}
+
+static char *sysctl_getname(const int *name, int nlen, const struct bin_table **tablep)
+{
+       char *tmp, *result;
+
+       result = ERR_PTR(-ENOMEM);
+       tmp = __getname();
+       if (tmp) {
+               const struct bin_table *table = get_sysctl(name, nlen, tmp);
+               result = tmp;
+               *tablep = table;
+               if (IS_ERR(table)) {
+                       __putname(tmp);
+                       result = ERR_CAST(table);
+               }
+       }
+       return result;
+}
+
+static ssize_t binary_sysctl(const int *name, int nlen,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen)
+{
+       const struct bin_table *table = NULL;
+       struct nameidata nd;
+       struct vfsmount *mnt;
+       struct file *file;
+       ssize_t result;
+       char *pathname;
+       int flags;
+       int acc_mode, fmode;
+
+       pathname = sysctl_getname(name, nlen, &table);
+       result = PTR_ERR(pathname);
+       if (IS_ERR(pathname))
+               goto out;
+
+       /* How should the sysctl be accessed? */
+       if (oldval && oldlen && newval && newlen) {
+               flags = O_RDWR;
+               acc_mode = MAY_READ | MAY_WRITE;
+               fmode = FMODE_READ | FMODE_WRITE;
+       } else if (newval && newlen) {
+               flags = O_WRONLY;
+               acc_mode = MAY_WRITE;
+               fmode = FMODE_WRITE;
+       } else if (oldval && oldlen) {
+               flags = O_RDONLY;
+               acc_mode = MAY_READ;
+               fmode = FMODE_READ;
+       } else {
+               result = 0;
+               goto out_putname;
+       }
+
+       mnt = current->nsproxy->pid_ns->proc_mnt;
+       result = vfs_path_lookup(mnt->mnt_root, mnt, pathname, 0, &nd);
+       if (result)
+               goto out_putname;
+
+       result = may_open(&nd.path, acc_mode, fmode);
+       if (result)
+               goto out_putpath;
+
+       file = dentry_open(nd.path.dentry, nd.path.mnt, flags, current_cred());
+       result = PTR_ERR(file);
+       if (IS_ERR(file))
+               goto out_putname;
+
+       result = table->convert(file, oldval, oldlen, newval, newlen);
+
+       fput(file);
+out_putname:
+       putname(pathname);
+out:
+       return result;
+
+out_putpath:
+       path_put(&nd.path);
+       goto out_putname;
+}
+
+
+#else /* CONFIG_SYSCTL_SYSCALL */
+
+static ssize_t binary_sysctl(const int *name, int nlen,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen)
+{
+       return -ENOSYS;
+}
+
+#endif /* CONFIG_SYSCTL_SYSCALL */
+
+
+static void deprecated_sysctl_warning(const int *name, int nlen)
+{
+       int i;
+
+       if (printk_ratelimit()) {
+               printk(KERN_INFO
+                       "warning: process `%s' used the deprecated sysctl "
+                       "system call with ", current->comm);
+               for (i = 0; i < nlen; i++)
+                       printk("%d.", name[i]);
+               printk("\n");
+       }
+       return;
+}
+
+static ssize_t do_sysctl(int __user *args_name, int nlen,
+       void __user *oldval, size_t oldlen, void __user *newval, size_t newlen)
+{
+       int name[CTL_MAXNAME];
+       int i;
+
+       /* Check args->nlen. */
+       if (nlen < 0 || nlen > CTL_MAXNAME)
+               return -ENOTDIR;
+       /* Read in the sysctl name for simplicity */
+       for (i = 0; i < nlen; i++)
+               if (get_user(name[i], args_name + i))
+                       return -EFAULT;
+
+       deprecated_sysctl_warning(name, nlen);
+
+       return binary_sysctl(name, nlen, oldval, oldlen, newval, newlen);
+}
+
+SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
+{
+       struct __sysctl_args tmp;
+       size_t oldlen = 0;
+       ssize_t result;
+
+       if (copy_from_user(&tmp, args, sizeof(tmp)))
+               return -EFAULT;
+
+       if (tmp.oldval && !tmp.oldlenp)
+               return -EFAULT;
+
+       if (tmp.oldlenp && get_user(oldlen, tmp.oldlenp))
+               return -EFAULT;
+
+       result = do_sysctl(tmp.name, tmp.nlen, tmp.oldval, oldlen,
+                          tmp.newval, tmp.newlen);
+
+       if (result >= 0) {
+               oldlen = result;
+               result = 0;
+       }
+
+       if (tmp.oldlenp && put_user(oldlen, tmp.oldlenp))
+               return -EFAULT;
+
+       return result;
+}
+
+
+#ifdef CONFIG_COMPAT
+#include <asm/compat.h>
+
+struct compat_sysctl_args {
+       compat_uptr_t   name;
+       int             nlen;
+       compat_uptr_t   oldval;
+       compat_uptr_t   oldlenp;
+       compat_uptr_t   newval;
+       compat_size_t   newlen;
+       compat_ulong_t  __unused[4];
+};
+
+asmlinkage long compat_sys_sysctl(struct compat_sysctl_args __user *args)
+{
+       struct compat_sysctl_args tmp;
+       compat_size_t __user *compat_oldlenp;
+       size_t oldlen = 0;
+       ssize_t result;
+
+       if (copy_from_user(&tmp, args, sizeof(tmp)))
+               return -EFAULT;
+
+       if (tmp.oldval && !tmp.oldlenp)
+               return -EFAULT;
+
+       compat_oldlenp = compat_ptr(tmp.oldlenp);
+       if (compat_oldlenp && get_user(oldlen, compat_oldlenp))
+               return -EFAULT;
+
+       result = do_sysctl(compat_ptr(tmp.name), tmp.nlen,
+                          compat_ptr(tmp.oldval), oldlen,
+                          compat_ptr(tmp.newval), tmp.newlen);
+
+       if (result >= 0) {
+               oldlen = result;
+               result = 0;
+       }
+
+       if (compat_oldlenp && put_user(oldlen, compat_oldlenp))
+               return -EFAULT;
+
+       return result;
+}
+
+#endif /* CONFIG_COMPAT */
index b6e7aae..04cdcf7 100644 (file)
 #include <linux/string.h>
 #include <net/ip_vs.h>
 
-struct trans_ctl_table {
-       int                     ctl_name;
-       const char              *procname;
-       const struct trans_ctl_table *child;
-};
-
-static const struct trans_ctl_table trans_random_table[] = {
-       { RANDOM_POOLSIZE,      "poolsize" },
-       { RANDOM_ENTROPY_COUNT, "entropy_avail" },
-       { RANDOM_READ_THRESH,   "read_wakeup_threshold" },
-       { RANDOM_WRITE_THRESH,  "write_wakeup_threshold" },
-       { RANDOM_BOOT_ID,       "boot_id" },
-       { RANDOM_UUID,          "uuid" },
-       {}
-};
-
-static const struct trans_ctl_table trans_pty_table[] = {
-       { PTY_MAX,              "max" },
-       { PTY_NR,               "nr" },
-       {}
-};
-
-static const struct trans_ctl_table trans_kern_table[] = {
-       { KERN_OSTYPE,                  "ostype" },
-       { KERN_OSRELEASE,               "osrelease" },
-       /* KERN_OSREV not used */
-       { KERN_VERSION,                 "version" },
-       /* KERN_SECUREMASK not used */
-       /* KERN_PROF not used */
-       { KERN_NODENAME,                "hostname" },
-       { KERN_DOMAINNAME,              "domainname" },
-
-       { KERN_PANIC,                   "panic" },
-       { KERN_REALROOTDEV,             "real-root-dev" },
-
-       { KERN_SPARC_REBOOT,            "reboot-cmd" },
-       { KERN_CTLALTDEL,               "ctrl-alt-del" },
-       { KERN_PRINTK,                  "printk" },
-
-       /* KERN_NAMETRANS not used */
-       /* KERN_PPC_HTABRECLAIM not used */
-       /* KERN_PPC_ZEROPAGED not used */
-       { KERN_PPC_POWERSAVE_NAP,       "powersave-nap" },
-
-       { KERN_MODPROBE,                "modprobe" },
-       { KERN_SG_BIG_BUFF,             "sg-big-buff" },
-       { KERN_ACCT,                    "acct" },
-       { KERN_PPC_L2CR,                "l2cr" },
-
-       /* KERN_RTSIGNR not used */
-       /* KERN_RTSIGMAX not used */
-
-       { KERN_SHMMAX,                  "shmmax" },
-       { KERN_MSGMAX,                  "msgmax" },
-       { KERN_MSGMNB,                  "msgmnb" },
-       /* KERN_MSGPOOL not used*/
-       { KERN_SYSRQ,                   "sysrq" },
-       { KERN_MAX_THREADS,             "threads-max" },
-       { KERN_RANDOM,                  "random",       trans_random_table },
-       { KERN_SHMALL,                  "shmall" },
-       { KERN_MSGMNI,                  "msgmni" },
-       { KERN_SEM,                     "sem" },
-       { KERN_SPARC_STOP_A,            "stop-a" },
-       { KERN_SHMMNI,                  "shmmni" },
-
-       { KERN_OVERFLOWUID,             "overflowuid" },
-       { KERN_OVERFLOWGID,             "overflowgid" },
-
-       { KERN_HOTPLUG,                 "hotplug", },
-       { KERN_IEEE_EMULATION_WARNINGS, "ieee_emulation_warnings" },
-
-       { KERN_S390_USER_DEBUG_LOGGING, "userprocess_debug" },
-       { KERN_CORE_USES_PID,           "core_uses_pid" },
-       { KERN_TAINTED,                 "tainted" },
-       { KERN_CADPID,                  "cad_pid" },
-       { KERN_PIDMAX,                  "pid_max" },
-       { KERN_CORE_PATTERN,            "core_pattern" },
-       { KERN_PANIC_ON_OOPS,           "panic_on_oops" },
-       { KERN_HPPA_PWRSW,              "soft-power" },
-       { KERN_HPPA_UNALIGNED,          "unaligned-trap" },
-
-       { KERN_PRINTK_RATELIMIT,        "printk_ratelimit" },
-       { KERN_PRINTK_RATELIMIT_BURST,  "printk_ratelimit_burst" },
-
-       { KERN_PTY,                     "pty",          trans_pty_table },
-       { KERN_NGROUPS_MAX,             "ngroups_max" },
-       { KERN_SPARC_SCONS_PWROFF,      "scons-poweroff" },
-       { KERN_HZ_TIMER,                "hz_timer" },
-       { KERN_UNKNOWN_NMI_PANIC,       "unknown_nmi_panic" },
-       { KERN_BOOTLOADER_TYPE,         "bootloader_type" },
-       { KERN_RANDOMIZE,               "randomize_va_space" },
-
-       { KERN_SPIN_RETRY,              "spin_retry" },
-       { KERN_ACPI_VIDEO_FLAGS,        "acpi_video_flags" },
-       { KERN_IA64_UNALIGNED,          "ignore-unaligned-usertrap" },
-       { KERN_COMPAT_LOG,              "compat-log" },
-       { KERN_MAX_LOCK_DEPTH,          "max_lock_depth" },
-       { KERN_NMI_WATCHDOG,            "nmi_watchdog" },
-       { KERN_PANIC_ON_NMI,            "panic_on_unrecovered_nmi" },
-       {}
-};
-
-static const struct trans_ctl_table trans_vm_table[] = {
-       { VM_OVERCOMMIT_MEMORY,         "overcommit_memory" },
-       { VM_PAGE_CLUSTER,              "page-cluster" },
-       { VM_DIRTY_BACKGROUND,          "dirty_background_ratio" },
-       { VM_DIRTY_RATIO,               "dirty_ratio" },
-       { VM_DIRTY_WB_CS,               "dirty_writeback_centisecs" },
-       { VM_DIRTY_EXPIRE_CS,           "dirty_expire_centisecs" },
-       { VM_NR_PDFLUSH_THREADS,        "nr_pdflush_threads" },
-       { VM_OVERCOMMIT_RATIO,          "overcommit_ratio" },
-       /* VM_PAGEBUF unused */
-       { VM_HUGETLB_PAGES,             "nr_hugepages" },
-       { VM_SWAPPINESS,                "swappiness" },
-       { VM_LOWMEM_RESERVE_RATIO,      "lowmem_reserve_ratio" },
-       { VM_MIN_FREE_KBYTES,           "min_free_kbytes" },
-       { VM_MAX_MAP_COUNT,             "max_map_count" },
-       { VM_LAPTOP_MODE,               "laptop_mode" },
-       { VM_BLOCK_DUMP,                "block_dump" },
-       { VM_HUGETLB_GROUP,             "hugetlb_shm_group" },
-       { VM_VFS_CACHE_PRESSURE,        "vfs_cache_pressure" },
-       { VM_LEGACY_VA_LAYOUT,          "legacy_va_layout" },
-       /* VM_SWAP_TOKEN_TIMEOUT unused */
-       { VM_DROP_PAGECACHE,            "drop_caches" },
-       { VM_PERCPU_PAGELIST_FRACTION,  "percpu_pagelist_fraction" },
-       { VM_ZONE_RECLAIM_MODE,         "zone_reclaim_mode" },
-       { VM_MIN_UNMAPPED,              "min_unmapped_ratio" },
-       { VM_PANIC_ON_OOM,              "panic_on_oom" },
-       { VM_VDSO_ENABLED,              "vdso_enabled" },
-       { VM_MIN_SLAB,                  "min_slab_ratio" },
-
-       {}
-};
-
-static const struct trans_ctl_table trans_net_core_table[] = {
-       { NET_CORE_WMEM_MAX,            "wmem_max" },
-       { NET_CORE_RMEM_MAX,            "rmem_max" },
-       { NET_CORE_WMEM_DEFAULT,        "wmem_default" },
-       { NET_CORE_RMEM_DEFAULT,        "rmem_default" },
-       /* NET_CORE_DESTROY_DELAY unused */
-       { NET_CORE_MAX_BACKLOG,         "netdev_max_backlog" },
-       /* NET_CORE_FASTROUTE unused */
-       { NET_CORE_MSG_COST,            "message_cost" },
-       { NET_CORE_MSG_BURST,           "message_burst" },
-       { NET_CORE_OPTMEM_MAX,          "optmem_max" },
-       /* NET_CORE_HOT_LIST_LENGTH unused */
-       /* NET_CORE_DIVERT_VERSION unused */
-       /* NET_CORE_NO_CONG_THRESH unused */
-       /* NET_CORE_NO_CONG unused */
-       /* NET_CORE_LO_CONG unused */
-       /* NET_CORE_MOD_CONG unused */
-       { NET_CORE_DEV_WEIGHT,          "dev_weight" },
-       { NET_CORE_SOMAXCONN,           "somaxconn" },
-       { NET_CORE_BUDGET,              "netdev_budget" },
-       { NET_CORE_AEVENT_ETIME,        "xfrm_aevent_etime" },
-       { NET_CORE_AEVENT_RSEQTH,       "xfrm_aevent_rseqth" },
-       { NET_CORE_WARNINGS,            "warnings" },
-       {},
-};
-
-static const struct trans_ctl_table trans_net_unix_table[] = {
-       /* NET_UNIX_DESTROY_DELAY unused */
-       /* NET_UNIX_DELETE_DELAY unused */
-       { NET_UNIX_MAX_DGRAM_QLEN,      "max_dgram_qlen" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv4_route_table[] = {
-       { NET_IPV4_ROUTE_FLUSH,                 "flush" },
-       { NET_IPV4_ROUTE_MIN_DELAY,             "min_delay" },
-       { NET_IPV4_ROUTE_MAX_DELAY,             "max_delay" },
-       { NET_IPV4_ROUTE_GC_THRESH,             "gc_thresh" },
-       { NET_IPV4_ROUTE_MAX_SIZE,              "max_size" },
-       { NET_IPV4_ROUTE_GC_MIN_INTERVAL,       "gc_min_interval" },
-       { NET_IPV4_ROUTE_GC_TIMEOUT,            "gc_timeout" },
-       { NET_IPV4_ROUTE_GC_INTERVAL,           "gc_interval" },
-       { NET_IPV4_ROUTE_REDIRECT_LOAD,         "redirect_load" },
-       { NET_IPV4_ROUTE_REDIRECT_NUMBER,       "redirect_number" },
-       { NET_IPV4_ROUTE_REDIRECT_SILENCE,      "redirect_silence" },
-       { NET_IPV4_ROUTE_ERROR_COST,            "error_cost" },
-       { NET_IPV4_ROUTE_ERROR_BURST,           "error_burst" },
-       { NET_IPV4_ROUTE_GC_ELASTICITY,         "gc_elasticity" },
-       { NET_IPV4_ROUTE_MTU_EXPIRES,           "mtu_expires" },
-       { NET_IPV4_ROUTE_MIN_PMTU,              "min_pmtu" },
-       { NET_IPV4_ROUTE_MIN_ADVMSS,            "min_adv_mss" },
-       { NET_IPV4_ROUTE_SECRET_INTERVAL,       "secret_interval" },
-       { NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS,    "gc_min_interval_ms" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv4_conf_vars_table[] = {
-       { NET_IPV4_CONF_FORWARDING,             "forwarding" },
-       { NET_IPV4_CONF_MC_FORWARDING,          "mc_forwarding" },
-
-       { NET_IPV4_CONF_PROXY_ARP,              "proxy_arp" },
-       { NET_IPV4_CONF_ACCEPT_REDIRECTS,       "accept_redirects" },
-       { NET_IPV4_CONF_SECURE_REDIRECTS,       "secure_redirects" },
-       { NET_IPV4_CONF_SEND_REDIRECTS,         "send_redirects" },
-       { NET_IPV4_CONF_SHARED_MEDIA,           "shared_media" },
-       { NET_IPV4_CONF_RP_FILTER,              "rp_filter" },
-       { NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE,    "accept_source_route" },
-       { NET_IPV4_CONF_BOOTP_RELAY,            "bootp_relay" },
-       { NET_IPV4_CONF_LOG_MARTIANS,           "log_martians" },
-       { NET_IPV4_CONF_TAG,                    "tag" },
-       { NET_IPV4_CONF_ARPFILTER,              "arp_filter" },
-       { NET_IPV4_CONF_MEDIUM_ID,              "medium_id" },
-       { NET_IPV4_CONF_NOXFRM,                 "disable_xfrm" },
-       { NET_IPV4_CONF_NOPOLICY,               "disable_policy" },
-       { NET_IPV4_CONF_FORCE_IGMP_VERSION,     "force_igmp_version" },
-
-       { NET_IPV4_CONF_ARP_ANNOUNCE,           "arp_announce" },
-       { NET_IPV4_CONF_ARP_IGNORE,             "arp_ignore" },
-       { NET_IPV4_CONF_PROMOTE_SECONDARIES,    "promote_secondaries" },
-       { NET_IPV4_CONF_ARP_ACCEPT,             "arp_accept" },
-       { NET_IPV4_CONF_ARP_NOTIFY,             "arp_notify" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv4_conf_table[] = {
-       { NET_PROTO_CONF_ALL,           "all",          trans_net_ipv4_conf_vars_table },
-       { NET_PROTO_CONF_DEFAULT,       "default",      trans_net_ipv4_conf_vars_table },
-       { 0, NULL, trans_net_ipv4_conf_vars_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_neigh_vars_table[] = {
-       { NET_NEIGH_MCAST_SOLICIT,      "mcast_solicit" },
-       { NET_NEIGH_UCAST_SOLICIT,      "ucast_solicit" },
-       { NET_NEIGH_APP_SOLICIT,        "app_solicit" },
-       { NET_NEIGH_RETRANS_TIME,       "retrans_time" },
-       { NET_NEIGH_REACHABLE_TIME,     "base_reachable_time" },
-       { NET_NEIGH_DELAY_PROBE_TIME,   "delay_first_probe_time" },
-       { NET_NEIGH_GC_STALE_TIME,      "gc_stale_time" },
-       { NET_NEIGH_UNRES_QLEN,         "unres_qlen" },
-       { NET_NEIGH_PROXY_QLEN,         "proxy_qlen" },
-       { NET_NEIGH_ANYCAST_DELAY,      "anycast_delay" },
-       { NET_NEIGH_PROXY_DELAY,        "proxy_delay" },
-       { NET_NEIGH_LOCKTIME,           "locktime" },
-       { NET_NEIGH_GC_INTERVAL,        "gc_interval" },
-       { NET_NEIGH_GC_THRESH1,         "gc_thresh1" },
-       { NET_NEIGH_GC_THRESH2,         "gc_thresh2" },
-       { NET_NEIGH_GC_THRESH3,         "gc_thresh3" },
-       { NET_NEIGH_RETRANS_TIME_MS,    "retrans_time_ms" },
-       { NET_NEIGH_REACHABLE_TIME_MS,  "base_reachable_time_ms" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_neigh_table[] = {
-       { NET_PROTO_CONF_DEFAULT, "default", trans_net_neigh_vars_table },
-       { 0, NULL, trans_net_neigh_vars_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv4_netfilter_table[] = {
-       { NET_IPV4_NF_CONNTRACK_MAX,                            "ip_conntrack_max" },
-
-       { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT,           "ip_conntrack_tcp_timeout_syn_sent" },
-       { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV,           "ip_conntrack_tcp_timeout_syn_recv" },
-       { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED,        "ip_conntrack_tcp_timeout_established" },
-       { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT,           "ip_conntrack_tcp_timeout_fin_wait" },
-       { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT,         "ip_conntrack_tcp_timeout_close_wait" },
-       { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK,           "ip_conntrack_tcp_timeout_last_ack" },
-       { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT,          "ip_conntrack_tcp_timeout_time_wait" },
-       { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE,              "ip_conntrack_tcp_timeout_close" },
-
-       { NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT,                    "ip_conntrack_udp_timeout" },
-       { NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM,             "ip_conntrack_udp_timeout_stream" },
-       { NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT,                   "ip_conntrack_icmp_timeout" },
-       { NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT,                "ip_conntrack_generic_timeout" },
-
-       { NET_IPV4_NF_CONNTRACK_BUCKETS,                        "ip_conntrack_buckets" },
-       { NET_IPV4_NF_CONNTRACK_LOG_INVALID,                    "ip_conntrack_log_invalid" },
-       { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS,        "ip_conntrack_tcp_timeout_max_retrans" },
-       { NET_IPV4_NF_CONNTRACK_TCP_LOOSE,                      "ip_conntrack_tcp_loose" },
-       { NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL,                 "ip_conntrack_tcp_be_liberal" },
-       { NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS,                "ip_conntrack_tcp_max_retrans" },
-
-       { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED,            "ip_conntrack_sctp_timeout_closed" },
-       { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT,       "ip_conntrack_sctp_timeout_cookie_wait" },
-       { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED,     "ip_conntrack_sctp_timeout_cookie_echoed" },
-       { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED,       "ip_conntrack_sctp_timeout_established" },
-       { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT,     "ip_conntrack_sctp_timeout_shutdown_sent" },
-       { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD,     "ip_conntrack_sctp_timeout_shutdown_recd" },
-       { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT, "ip_conntrack_sctp_timeout_shutdown_ack_sent" },
-
-       { NET_IPV4_NF_CONNTRACK_COUNT,          "ip_conntrack_count" },
-       { NET_IPV4_NF_CONNTRACK_CHECKSUM,       "ip_conntrack_checksum" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv4_table[] = {
-       { NET_IPV4_FORWARD,                     "ip_forward" },
-       { NET_IPV4_DYNADDR,                     "ip_dynaddr" },
-
-       { NET_IPV4_CONF,                "conf",         trans_net_ipv4_conf_table },
-       { NET_IPV4_NEIGH,               "neigh",        trans_net_neigh_table },
-       { NET_IPV4_ROUTE,               "route",        trans_net_ipv4_route_table },
-       /* NET_IPV4_FIB_HASH unused */
-       { NET_IPV4_NETFILTER,           "netfilter",    trans_net_ipv4_netfilter_table },
-
-       { NET_IPV4_TCP_TIMESTAMPS,              "tcp_timestamps" },
-       { NET_IPV4_TCP_WINDOW_SCALING,          "tcp_window_scaling" },
-       { NET_IPV4_TCP_SACK,                    "tcp_sack" },
-       { NET_IPV4_TCP_RETRANS_COLLAPSE,        "tcp_retrans_collapse" },
-       { NET_IPV4_DEFAULT_TTL,                 "ip_default_ttl" },
-       /* NET_IPV4_AUTOCONFIG unused */
-       { NET_IPV4_NO_PMTU_DISC,                "ip_no_pmtu_disc" },
-       { NET_IPV4_TCP_SYN_RETRIES,             "tcp_syn_retries" },
-       { NET_IPV4_IPFRAG_HIGH_THRESH,          "ipfrag_high_thresh" },
-       { NET_IPV4_IPFRAG_LOW_THRESH,           "ipfrag_low_thresh" },
-       { NET_IPV4_IPFRAG_TIME,                 "ipfrag_time" },
-       /* NET_IPV4_TCP_MAX_KA_PROBES unused */
-       { NET_IPV4_TCP_KEEPALIVE_TIME,          "tcp_keepalive_time" },
-       { NET_IPV4_TCP_KEEPALIVE_PROBES,        "tcp_keepalive_probes" },
-       { NET_IPV4_TCP_RETRIES1,                "tcp_retries1" },
-       { NET_IPV4_TCP_RETRIES2,                "tcp_retries2" },
-       { NET_IPV4_TCP_FIN_TIMEOUT,             "tcp_fin_timeout" },
-       /* NET_IPV4_IP_MASQ_DEBUG unused */
-       { NET_TCP_SYNCOOKIES,                   "tcp_syncookies" },
-       { NET_TCP_STDURG,                       "tcp_stdurg" },
-       { NET_TCP_RFC1337,                      "tcp_rfc1337" },
-       /* NET_TCP_SYN_TAILDROP unused */
-       { NET_TCP_MAX_SYN_BACKLOG,              "tcp_max_syn_backlog" },
-       { NET_IPV4_LOCAL_PORT_RANGE,            "ip_local_port_range" },
-       { NET_IPV4_ICMP_ECHO_IGNORE_ALL,        "icmp_echo_ignore_all" },
-       { NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS, "icmp_echo_ignore_broadcasts" },
-       /* NET_IPV4_ICMP_SOURCEQUENCH_RATE unused */
-       /* NET_IPV4_ICMP_DESTUNREACH_RATE unused */
-       /* NET_IPV4_ICMP_TIMEEXCEED_RATE unused */
-       /* NET_IPV4_ICMP_PARAMPROB_RATE unused */
-       /* NET_IPV4_ICMP_ECHOREPLY_RATE unused */
-       { NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES,   "icmp_ignore_bogus_error_responses" },
-       { NET_IPV4_IGMP_MAX_MEMBERSHIPS,        "igmp_max_memberships" },
-       { NET_TCP_TW_RECYCLE,                   "tcp_tw_recycle" },
-       /* NET_IPV4_ALWAYS_DEFRAG unused */
-       { NET_IPV4_TCP_KEEPALIVE_INTVL,         "tcp_keepalive_intvl" },
-       { NET_IPV4_INET_PEER_THRESHOLD,         "inet_peer_threshold" },
-       { NET_IPV4_INET_PEER_MINTTL,            "inet_peer_minttl" },
-       { NET_IPV4_INET_PEER_MAXTTL,            "inet_peer_maxttl" },
-       { NET_IPV4_INET_PEER_GC_MINTIME,        "inet_peer_gc_mintime" },
-       { NET_IPV4_INET_PEER_GC_MAXTIME,        "inet_peer_gc_maxtime" },
-       { NET_TCP_ORPHAN_RETRIES,               "tcp_orphan_retries" },
-       { NET_TCP_ABORT_ON_OVERFLOW,            "tcp_abort_on_overflow" },
-       { NET_TCP_SYNACK_RETRIES,               "tcp_synack_retries" },
-       { NET_TCP_MAX_ORPHANS,                  "tcp_max_orphans" },
-       { NET_TCP_MAX_TW_BUCKETS,               "tcp_max_tw_buckets" },
-       { NET_TCP_FACK,                         "tcp_fack" },
-       { NET_TCP_REORDERING,                   "tcp_reordering" },
-       { NET_TCP_ECN,                          "tcp_ecn" },
-       { NET_TCP_DSACK,                        "tcp_dsack" },
-       { NET_TCP_MEM,                          "tcp_mem" },
-       { NET_TCP_WMEM,                         "tcp_wmem" },
-       { NET_TCP_RMEM,                         "tcp_rmem" },
-       { NET_TCP_APP_WIN,                      "tcp_app_win" },
-       { NET_TCP_ADV_WIN_SCALE,                "tcp_adv_win_scale" },
-       { NET_IPV4_NONLOCAL_BIND,               "ip_nonlocal_bind" },
-       { NET_IPV4_ICMP_RATELIMIT,              "icmp_ratelimit" },
-       { NET_IPV4_ICMP_RATEMASK,               "icmp_ratemask" },
-       { NET_TCP_TW_REUSE,                     "tcp_tw_reuse" },
-       { NET_TCP_FRTO,                         "tcp_frto" },
-       { NET_TCP_LOW_LATENCY,                  "tcp_low_latency" },
-       { NET_IPV4_IPFRAG_SECRET_INTERVAL,      "ipfrag_secret_interval" },
-       { NET_IPV4_IGMP_MAX_MSF,                "igmp_max_msf" },
-       { NET_TCP_NO_METRICS_SAVE,              "tcp_no_metrics_save" },
-       /* NET_TCP_DEFAULT_WIN_SCALE unused */
-       { NET_TCP_MODERATE_RCVBUF,              "tcp_moderate_rcvbuf" },
-       { NET_TCP_TSO_WIN_DIVISOR,              "tcp_tso_win_divisor" },
-       /* NET_TCP_BIC_BETA unused */
-       { NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR,      "icmp_errors_use_inbound_ifaddr" },
-       { NET_TCP_CONG_CONTROL,                 "tcp_congestion_control" },
-       { NET_TCP_ABC,                          "tcp_abc" },
-       { NET_IPV4_IPFRAG_MAX_DIST,             "ipfrag_max_dist" },
-       { NET_TCP_MTU_PROBING,                  "tcp_mtu_probing" },
-       { NET_TCP_BASE_MSS,                     "tcp_base_mss" },
-       { NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS,       "tcp_workaround_signed_windows" },
-       { NET_TCP_DMA_COPYBREAK,                "tcp_dma_copybreak" },
-       { NET_TCP_SLOW_START_AFTER_IDLE,        "tcp_slow_start_after_idle" },
-       { NET_CIPSOV4_CACHE_ENABLE,             "cipso_cache_enable" },
-       { NET_CIPSOV4_CACHE_BUCKET_SIZE,        "cipso_cache_bucket_size" },
-       { NET_CIPSOV4_RBM_OPTFMT,               "cipso_rbm_optfmt" },
-       { NET_CIPSOV4_RBM_STRICTVALID,          "cipso_rbm_strictvalid" },
-       { NET_TCP_AVAIL_CONG_CONTROL,           "tcp_available_congestion_control" },
-       { NET_TCP_ALLOWED_CONG_CONTROL,         "tcp_allowed_congestion_control" },
-       { NET_TCP_MAX_SSTHRESH,                 "tcp_max_ssthresh" },
-       { NET_TCP_FRTO_RESPONSE,                "tcp_frto_response" },
-       { 2088 /* NET_IPQ_QMAX */,              "ip_queue_maxlen" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipx_table[] = {
-       { NET_IPX_PPROP_BROADCASTING,   "ipx_pprop_broadcasting" },
-       /* NET_IPX_FORWARDING unused */
-       {}
-};
-
-static const struct trans_ctl_table trans_net_atalk_table[] = {
-       { NET_ATALK_AARP_EXPIRY_TIME,           "aarp-expiry-time" },
-       { NET_ATALK_AARP_TICK_TIME,             "aarp-tick-time" },
-       { NET_ATALK_AARP_RETRANSMIT_LIMIT,      "aarp-retransmit-limit" },
-       { NET_ATALK_AARP_RESOLVE_TIME,          "aarp-resolve-time" },
-       {},
-};
-
-static const struct trans_ctl_table trans_net_netrom_table[] = {
-       { NET_NETROM_DEFAULT_PATH_QUALITY,              "default_path_quality" },
-       { NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER,    "obsolescence_count_initialiser" },
-       { NET_NETROM_NETWORK_TTL_INITIALISER,           "network_ttl_initialiser" },
-       { NET_NETROM_TRANSPORT_TIMEOUT,                 "transport_timeout" },
-       { NET_NETROM_TRANSPORT_MAXIMUM_TRIES,           "transport_maximum_tries" },
-       { NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY,       "transport_acknowledge_delay" },
-       { NET_NETROM_TRANSPORT_BUSY_DELAY,              "transport_busy_delay" },
-       { NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE,   "transport_requested_window_size" },
-       { NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT,     "transport_no_activity_timeout" },
-       { NET_NETROM_ROUTING_CONTROL,                   "routing_control" },
-       { NET_NETROM_LINK_FAILS_COUNT,                  "link_fails_count" },
-       { NET_NETROM_RESET,                             "reset" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ax25_param_table[] = {
-       { NET_AX25_IP_DEFAULT_MODE,     "ip_default_mode" },
-       { NET_AX25_DEFAULT_MODE,        "ax25_default_mode" },
-       { NET_AX25_BACKOFF_TYPE,        "backoff_type" },
-       { NET_AX25_CONNECT_MODE,        "connect_mode" },
-       { NET_AX25_STANDARD_WINDOW,     "standard_window_size" },
-       { NET_AX25_EXTENDED_WINDOW,     "extended_window_size" },
-       { NET_AX25_T1_TIMEOUT,          "t1_timeout" },
-       { NET_AX25_T2_TIMEOUT,          "t2_timeout" },
-       { NET_AX25_T3_TIMEOUT,          "t3_timeout" },
-       { NET_AX25_IDLE_TIMEOUT,        "idle_timeout" },
-       { NET_AX25_N2,                  "maximum_retry_count" },
-       { NET_AX25_PACLEN,              "maximum_packet_length" },
-       { NET_AX25_PROTOCOL,            "protocol" },
-       { NET_AX25_DAMA_SLAVE_TIMEOUT,  "dama_slave_timeout" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ax25_table[] = {
-       { 0, NULL, trans_net_ax25_param_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_bridge_table[] = {
-       { NET_BRIDGE_NF_CALL_ARPTABLES,         "bridge-nf-call-arptables" },
-       { NET_BRIDGE_NF_CALL_IPTABLES,          "bridge-nf-call-iptables" },
-       { NET_BRIDGE_NF_CALL_IP6TABLES,         "bridge-nf-call-ip6tables" },
-       { NET_BRIDGE_NF_FILTER_VLAN_TAGGED,     "bridge-nf-filter-vlan-tagged" },
-       { NET_BRIDGE_NF_FILTER_PPPOE_TAGGED,    "bridge-nf-filter-pppoe-tagged" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_rose_table[] = {
-       { NET_ROSE_RESTART_REQUEST_TIMEOUT,     "restart_request_timeout" },
-       { NET_ROSE_CALL_REQUEST_TIMEOUT,        "call_request_timeout" },
-       { NET_ROSE_RESET_REQUEST_TIMEOUT,       "reset_request_timeout" },
-       { NET_ROSE_CLEAR_REQUEST_TIMEOUT,       "clear_request_timeout" },
-       { NET_ROSE_ACK_HOLD_BACK_TIMEOUT,       "acknowledge_hold_back_timeout" },
-       { NET_ROSE_ROUTING_CONTROL,             "routing_control" },
-       { NET_ROSE_LINK_FAIL_TIMEOUT,           "link_fail_timeout" },
-       { NET_ROSE_MAX_VCS,                     "maximum_virtual_circuits" },
-       { NET_ROSE_WINDOW_SIZE,                 "window_size" },
-       { NET_ROSE_NO_ACTIVITY_TIMEOUT,         "no_activity_timeout" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv6_conf_var_table[] = {
-       { NET_IPV6_FORWARDING,                  "forwarding" },
-       { NET_IPV6_HOP_LIMIT,                   "hop_limit" },
-       { NET_IPV6_MTU,                         "mtu" },
-       { NET_IPV6_ACCEPT_RA,                   "accept_ra" },
-       { NET_IPV6_ACCEPT_REDIRECTS,            "accept_redirects" },
-       { NET_IPV6_AUTOCONF,                    "autoconf" },
-       { NET_IPV6_DAD_TRANSMITS,               "dad_transmits" },
-       { NET_IPV6_RTR_SOLICITS,                "router_solicitations" },
-       { NET_IPV6_RTR_SOLICIT_INTERVAL,        "router_solicitation_interval" },
-       { NET_IPV6_RTR_SOLICIT_DELAY,           "router_solicitation_delay" },
-       { NET_IPV6_USE_TEMPADDR,                "use_tempaddr" },
-       { NET_IPV6_TEMP_VALID_LFT,              "temp_valid_lft" },
-       { NET_IPV6_TEMP_PREFERED_LFT,           "temp_prefered_lft" },
-       { NET_IPV6_REGEN_MAX_RETRY,             "regen_max_retry" },
-       { NET_IPV6_MAX_DESYNC_FACTOR,           "max_desync_factor" },
-       { NET_IPV6_MAX_ADDRESSES,               "max_addresses" },
-       { NET_IPV6_FORCE_MLD_VERSION,           "force_mld_version" },
-       { NET_IPV6_ACCEPT_RA_DEFRTR,            "accept_ra_defrtr" },
-       { NET_IPV6_ACCEPT_RA_PINFO,             "accept_ra_pinfo" },
-       { NET_IPV6_ACCEPT_RA_RTR_PREF,          "accept_ra_rtr_pref" },
-       { NET_IPV6_RTR_PROBE_INTERVAL,          "router_probe_interval" },
-       { NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN,  "accept_ra_rt_info_max_plen" },
-       { NET_IPV6_PROXY_NDP,                   "proxy_ndp" },
-       { NET_IPV6_ACCEPT_SOURCE_ROUTE,         "accept_source_route" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv6_conf_table[] = {
-       { NET_PROTO_CONF_ALL,           "all",  trans_net_ipv6_conf_var_table },
-       { NET_PROTO_CONF_DEFAULT,       "default", trans_net_ipv6_conf_var_table },
-       { 0, NULL, trans_net_ipv6_conf_var_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv6_route_table[] = {
-       { NET_IPV6_ROUTE_FLUSH,                 "flush" },
-       { NET_IPV6_ROUTE_GC_THRESH,             "gc_thresh" },
-       { NET_IPV6_ROUTE_MAX_SIZE,              "max_size" },
-       { NET_IPV6_ROUTE_GC_MIN_INTERVAL,       "gc_min_interval" },
-       { NET_IPV6_ROUTE_GC_TIMEOUT,            "gc_timeout" },
-       { NET_IPV6_ROUTE_GC_INTERVAL,           "gc_interval" },
-       { NET_IPV6_ROUTE_GC_ELASTICITY,         "gc_elasticity" },
-       { NET_IPV6_ROUTE_MTU_EXPIRES,           "mtu_expires" },
-       { NET_IPV6_ROUTE_MIN_ADVMSS,            "min_adv_mss" },
-       { NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS,    "gc_min_interval_ms" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv6_icmp_table[] = {
-       { NET_IPV6_ICMP_RATELIMIT,      "ratelimit" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_ipv6_table[] = {
-       { NET_IPV6_CONF,                "conf",         trans_net_ipv6_conf_table },
-       { NET_IPV6_NEIGH,               "neigh",        trans_net_neigh_table },
-       { NET_IPV6_ROUTE,               "route",        trans_net_ipv6_route_table },
-       { NET_IPV6_ICMP,                "icmp",         trans_net_ipv6_icmp_table },
-       { NET_IPV6_BINDV6ONLY,          "bindv6only" },
-       { NET_IPV6_IP6FRAG_HIGH_THRESH, "ip6frag_high_thresh" },
-       { NET_IPV6_IP6FRAG_LOW_THRESH,  "ip6frag_low_thresh" },
-       { NET_IPV6_IP6FRAG_TIME,        "ip6frag_time" },
-       { NET_IPV6_IP6FRAG_SECRET_INTERVAL,     "ip6frag_secret_interval" },
-       { NET_IPV6_MLD_MAX_MSF,         "mld_max_msf" },
-       { 2088 /* IPQ_QMAX */,          "ip6_queue_maxlen" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_x25_table[] = {
-       { NET_X25_RESTART_REQUEST_TIMEOUT,      "restart_request_timeout" },
-       { NET_X25_CALL_REQUEST_TIMEOUT,         "call_request_timeout" },
-       { NET_X25_RESET_REQUEST_TIMEOUT,        "reset_request_timeout" },
-       { NET_X25_CLEAR_REQUEST_TIMEOUT,        "clear_request_timeout" },
-       { NET_X25_ACK_HOLD_BACK_TIMEOUT,        "acknowledgement_hold_back_timeout" },
-       { NET_X25_FORWARD,                      "x25_forward" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_tr_table[] = {
-       { NET_TR_RIF_TIMEOUT,   "rif_timeout" },
-       {}
-};
-
-
-static const struct trans_ctl_table trans_net_decnet_conf_vars[] = {
-       { NET_DECNET_CONF_DEV_FORWARDING,       "forwarding" },
-       { NET_DECNET_CONF_DEV_PRIORITY,         "priority" },
-       { NET_DECNET_CONF_DEV_T2,               "t2" },
-       { NET_DECNET_CONF_DEV_T3,               "t3" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_decnet_conf[] = {
-       { 0, NULL, trans_net_decnet_conf_vars },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_decnet_table[] = {
-       { NET_DECNET_CONF,              "conf", trans_net_decnet_conf },
-       { NET_DECNET_NODE_ADDRESS,      "node_address" },
-       { NET_DECNET_NODE_NAME,         "node_name" },
-       { NET_DECNET_DEFAULT_DEVICE,    "default_device" },
-       { NET_DECNET_TIME_WAIT,         "time_wait" },
-       { NET_DECNET_DN_COUNT,          "dn_count" },
-       { NET_DECNET_DI_COUNT,          "di_count" },
-       { NET_DECNET_DR_COUNT,          "dr_count" },
-       { NET_DECNET_DST_GC_INTERVAL,   "dst_gc_interval" },
-       { NET_DECNET_NO_FC_MAX_CWND,    "no_fc_max_cwnd" },
-       { NET_DECNET_MEM,               "decnet_mem" },
-       { NET_DECNET_RMEM,              "decnet_rmem" },
-       { NET_DECNET_WMEM,              "decnet_wmem" },
-       { NET_DECNET_DEBUG_LEVEL,       "debug" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_sctp_table[] = {
-       { NET_SCTP_RTO_INITIAL,         "rto_initial" },
-       { NET_SCTP_RTO_MIN,             "rto_min" },
-       { NET_SCTP_RTO_MAX,             "rto_max" },
-       { NET_SCTP_RTO_ALPHA,           "rto_alpha_exp_divisor" },
-       { NET_SCTP_RTO_BETA,            "rto_beta_exp_divisor" },
-       { NET_SCTP_VALID_COOKIE_LIFE,   "valid_cookie_life" },
-       { NET_SCTP_ASSOCIATION_MAX_RETRANS,     "association_max_retrans" },
-       { NET_SCTP_PATH_MAX_RETRANS,    "path_max_retrans" },
-       { NET_SCTP_MAX_INIT_RETRANSMITS,        "max_init_retransmits" },
-       { NET_SCTP_HB_INTERVAL,         "hb_interval" },
-       { NET_SCTP_PRESERVE_ENABLE,     "cookie_preserve_enable" },
-       { NET_SCTP_MAX_BURST,           "max_burst" },
-       { NET_SCTP_ADDIP_ENABLE,        "addip_enable" },
-       { NET_SCTP_PRSCTP_ENABLE,       "prsctp_enable" },
-       { NET_SCTP_SNDBUF_POLICY,       "sndbuf_policy" },
-       { NET_SCTP_SACK_TIMEOUT,        "sack_timeout" },
-       { NET_SCTP_RCVBUF_POLICY,       "rcvbuf_policy" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_llc_llc2_timeout_table[] = {
-       { NET_LLC2_ACK_TIMEOUT,         "ack" },
-       { NET_LLC2_P_TIMEOUT,           "p" },
-       { NET_LLC2_REJ_TIMEOUT,         "rej" },
-       { NET_LLC2_BUSY_TIMEOUT,        "busy" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_llc_station_table[] = {
-       { NET_LLC_STATION_ACK_TIMEOUT,  "ack_timeout" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_llc_llc2_table[] = {
-       { NET_LLC2,             "timeout",      trans_net_llc_llc2_timeout_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_llc_table[] = {
-       { NET_LLC2,             "llc2",         trans_net_llc_llc2_table },
-       { NET_LLC_STATION,      "station",      trans_net_llc_station_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_netfilter_table[] = {
-       { NET_NF_CONNTRACK_MAX,                         "nf_conntrack_max" },
-       { NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT,        "nf_conntrack_tcp_timeout_syn_sent" },
-       { NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV,        "nf_conntrack_tcp_timeout_syn_recv" },
-       { NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED,     "nf_conntrack_tcp_timeout_established" },
-       { NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT,        "nf_conntrack_tcp_timeout_fin_wait" },
-       { NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT,      "nf_conntrack_tcp_timeout_close_wait" },
-       { NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK,        "nf_conntrack_tcp_timeout_last_ack" },
-       { NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT,       "nf_conntrack_tcp_timeout_time_wait" },
-       { NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE,           "nf_conntrack_tcp_timeout_close" },
-       { NET_NF_CONNTRACK_UDP_TIMEOUT,                 "nf_conntrack_udp_timeout" },
-       { NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM,          "nf_conntrack_udp_timeout_stream" },
-       { NET_NF_CONNTRACK_ICMP_TIMEOUT,        "nf_conntrack_icmp_timeout" },
-       { NET_NF_CONNTRACK_GENERIC_TIMEOUT,             "nf_conntrack_generic_timeout" },
-       { NET_NF_CONNTRACK_BUCKETS,                     "nf_conntrack_buckets" },
-       { NET_NF_CONNTRACK_LOG_INVALID,                 "nf_conntrack_log_invalid" },
-       { NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS,     "nf_conntrack_tcp_timeout_max_retrans" },
-       { NET_NF_CONNTRACK_TCP_LOOSE,                   "nf_conntrack_tcp_loose" },
-       { NET_NF_CONNTRACK_TCP_BE_LIBERAL,              "nf_conntrack_tcp_be_liberal" },
-       { NET_NF_CONNTRACK_TCP_MAX_RETRANS,             "nf_conntrack_tcp_max_retrans" },
-       { NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED,         "nf_conntrack_sctp_timeout_closed" },
-       { NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT,    "nf_conntrack_sctp_timeout_cookie_wait" },
-       { NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED,  "nf_conntrack_sctp_timeout_cookie_echoed" },
-       { NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED,    "nf_conntrack_sctp_timeout_established" },
-       { NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT,  "nf_conntrack_sctp_timeout_shutdown_sent" },
-       { NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD,  "nf_conntrack_sctp_timeout_shutdown_recd" },
-       { NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT,      "nf_conntrack_sctp_timeout_shutdown_ack_sent" },
-       { NET_NF_CONNTRACK_COUNT,                       "nf_conntrack_count" },
-       { NET_NF_CONNTRACK_ICMPV6_TIMEOUT,      "nf_conntrack_icmpv6_timeout" },
-       { NET_NF_CONNTRACK_FRAG6_TIMEOUT,               "nf_conntrack_frag6_timeout" },
-       { NET_NF_CONNTRACK_FRAG6_LOW_THRESH,            "nf_conntrack_frag6_low_thresh" },
-       { NET_NF_CONNTRACK_FRAG6_HIGH_THRESH,           "nf_conntrack_frag6_high_thresh" },
-       { NET_NF_CONNTRACK_CHECKSUM,                    "nf_conntrack_checksum" },
-
-       {}
-};
-
-static const struct trans_ctl_table trans_net_dccp_table[] = {
-       { NET_DCCP_DEFAULT,     "default" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_irda_table[] = {
-       { NET_IRDA_DISCOVERY,           "discovery" },
-       { NET_IRDA_DEVNAME,             "devname" },
-       { NET_IRDA_DEBUG,               "debug" },
-       { NET_IRDA_FAST_POLL,           "fast_poll_increase" },
-       { NET_IRDA_DISCOVERY_SLOTS,     "discovery_slots" },
-       { NET_IRDA_DISCOVERY_TIMEOUT,   "discovery_timeout" },
-       { NET_IRDA_SLOT_TIMEOUT,        "slot_timeout" },
-       { NET_IRDA_MAX_BAUD_RATE,       "max_baud_rate" },
-       { NET_IRDA_MIN_TX_TURN_TIME,    "min_tx_turn_time" },
-       { NET_IRDA_MAX_TX_DATA_SIZE,    "max_tx_data_size" },
-       { NET_IRDA_MAX_TX_WINDOW,       "max_tx_window" },
-       { NET_IRDA_MAX_NOREPLY_TIME,    "max_noreply_time" },
-       { NET_IRDA_WARN_NOREPLY_TIME,   "warn_noreply_time" },
-       { NET_IRDA_LAP_KEEPALIVE_TIME,  "lap_keepalive_time" },
-       {}
-};
-
-static const struct trans_ctl_table trans_net_table[] = {
-       { NET_CORE,             "core",         trans_net_core_table },
-       /* NET_ETHER not used */
-       /* NET_802 not used */
-       { NET_UNIX,             "unix",         trans_net_unix_table },
-       { NET_IPV4,             "ipv4",         trans_net_ipv4_table },
-       { NET_IPX,              "ipx",          trans_net_ipx_table },
-       { NET_ATALK,            "appletalk",    trans_net_atalk_table },
-       { NET_NETROM,           "netrom",       trans_net_netrom_table },
-       { NET_AX25,             "ax25",         trans_net_ax25_table },
-       { NET_BRIDGE,           "bridge",       trans_net_bridge_table },
-       { NET_ROSE,             "rose",         trans_net_rose_table },
-       { NET_IPV6,             "ipv6",         trans_net_ipv6_table },
-       { NET_X25,              "x25",          trans_net_x25_table },
-       { NET_TR,               "token-ring",   trans_net_tr_table },
-       { NET_DECNET,           "decnet",       trans_net_decnet_table },
-       /*  NET_ECONET not used */
-       { NET_SCTP,             "sctp",         trans_net_sctp_table },
-       { NET_LLC,              "llc",          trans_net_llc_table },
-       { NET_NETFILTER,        "netfilter",    trans_net_netfilter_table },
-       { NET_DCCP,             "dccp",         trans_net_dccp_table },
-       { NET_IRDA,             "irda",         trans_net_irda_table },
-       { 2089,                 "nf_conntrack_max" },
-       {}
-};
-
-static const struct trans_ctl_table trans_fs_quota_table[] = {
-       { FS_DQ_LOOKUPS,        "lookups" },
-       { FS_DQ_DROPS,          "drops" },
-       { FS_DQ_READS,          "reads" },
-       { FS_DQ_WRITES,         "writes" },
-       { FS_DQ_CACHE_HITS,     "cache_hits" },
-       { FS_DQ_ALLOCATED,      "allocated_dquots" },
-       { FS_DQ_FREE,           "free_dquots" },
-       { FS_DQ_SYNCS,          "syncs" },
-       { FS_DQ_WARNINGS,       "warnings" },
-       {}
-};
-
-static const struct trans_ctl_table trans_fs_xfs_table[] = {
-       { XFS_SGID_INHERIT,     "irix_sgid_inherit" },
-       { XFS_SYMLINK_MODE,     "irix_symlink_mode" },
-       { XFS_PANIC_MASK,       "panic_mask" },
-
-       { XFS_ERRLEVEL,         "error_level" },
-       { XFS_SYNCD_TIMER,      "xfssyncd_centisecs" },
-       { XFS_INHERIT_SYNC,     "inherit_sync" },
-       { XFS_INHERIT_NODUMP,   "inherit_nodump" },
-       { XFS_INHERIT_NOATIME,  "inherit_noatime" },
-       { XFS_BUF_TIMER,        "xfsbufd_centisecs" },
-       { XFS_BUF_AGE,          "age_buffer_centisecs" },
-       { XFS_INHERIT_NOSYM,    "inherit_nosymlinks" },
-       { XFS_ROTORSTEP,        "rotorstep" },
-       { XFS_INHERIT_NODFRG,   "inherit_nodefrag" },
-       { XFS_FILESTREAM_TIMER, "filestream_centisecs" },
-       { XFS_STATS_CLEAR,      "stats_clear" },
-       {}
-};
-
-static const struct trans_ctl_table trans_fs_ocfs2_nm_table[] = {
-       { 1, "hb_ctl_path" },
-       {}
-};
-
-static const struct trans_ctl_table trans_fs_ocfs2_table[] = {
-       { 1,    "nm",   trans_fs_ocfs2_nm_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_inotify_table[] = {
-       { INOTIFY_MAX_USER_INSTANCES,   "max_user_instances" },
-       { INOTIFY_MAX_USER_WATCHES,     "max_user_watches" },
-       { INOTIFY_MAX_QUEUED_EVENTS,    "max_queued_events" },
-       {}
-};
-
-static const struct trans_ctl_table trans_fs_table[] = {
-       { FS_NRINODE,           "inode-nr" },
-       { FS_STATINODE,         "inode-state" },
-       /* FS_MAXINODE unused */
-       /* FS_NRDQUOT unused */
-       /* FS_MAXDQUOT unused */
-       { FS_NRFILE,            "file-nr" },
-       { FS_MAXFILE,           "file-max" },
-       { FS_DENTRY,            "dentry-state" },
-       /* FS_NRSUPER unused */
-       /* FS_MAXUPSER unused */
-       { FS_OVERFLOWUID,       "overflowuid" },
-       { FS_OVERFLOWGID,       "overflowgid" },
-       { FS_LEASES,            "leases-enable" },
-       { FS_DIR_NOTIFY,        "dir-notify-enable" },
-       { FS_LEASE_TIME,        "lease-break-time" },
-       { FS_DQSTATS,           "quota",                trans_fs_quota_table },
-       { FS_XFS,               "xfs",                  trans_fs_xfs_table },
-       { FS_AIO_NR,            "aio-nr" },
-       { FS_AIO_MAX_NR,        "aio-max-nr" },
-       { FS_INOTIFY,           "inotify",              trans_inotify_table },
-       { FS_OCFS2,             "ocfs2",                trans_fs_ocfs2_table },
-       { KERN_SETUID_DUMPABLE, "suid_dumpable" },
-       {}
-};
-
-static const struct trans_ctl_table trans_debug_table[] = {
-       {}
-};
-
-static const struct trans_ctl_table trans_cdrom_table[] = {
-       { DEV_CDROM_INFO,               "info" },
-       { DEV_CDROM_AUTOCLOSE,          "autoclose" },
-       { DEV_CDROM_AUTOEJECT,          "autoeject" },
-       { DEV_CDROM_DEBUG,              "debug" },
-       { DEV_CDROM_LOCK,               "lock" },
-       { DEV_CDROM_CHECK_MEDIA,        "check_media" },
-       {}
-};
-
-static const struct trans_ctl_table trans_ipmi_table[] = {
-       { DEV_IPMI_POWEROFF_POWERCYCLE, "poweroff_powercycle" },
-       {}
-};
-
-static const struct trans_ctl_table trans_mac_hid_files[] = {
-       /* DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES unused */
-       /* DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES unused */
-       { DEV_MAC_HID_MOUSE_BUTTON_EMULATION,   "mouse_button_emulation" },
-       { DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE,    "mouse_button2_keycode" },
-       { DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE,    "mouse_button3_keycode" },
-       /* DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES unused */
-       {}
-};
-
-static const struct trans_ctl_table trans_raid_table[] = {
-       { DEV_RAID_SPEED_LIMIT_MIN,     "speed_limit_min" },
-       { DEV_RAID_SPEED_LIMIT_MAX,     "speed_limit_max" },
-       {}
-};
-
-static const struct trans_ctl_table trans_scsi_table[] = {
-       { DEV_SCSI_LOGGING_LEVEL, "logging_level" },
-       {}
-};
-
-static const struct trans_ctl_table trans_parport_default_table[] = {
-       { DEV_PARPORT_DEFAULT_TIMESLICE,        "timeslice" },
-       { DEV_PARPORT_DEFAULT_SPINTIME,         "spintime" },
-       {}
-};
-
-static const struct trans_ctl_table trans_parport_device_table[] = {
-       { DEV_PARPORT_DEVICE_TIMESLICE,         "timeslice" },
-       {}
-};
-
-static const struct trans_ctl_table trans_parport_devices_table[] = {
-       { DEV_PARPORT_DEVICES_ACTIVE,           "active" },
-       { 0, NULL, trans_parport_device_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_parport_parport_table[] = {
-       { DEV_PARPORT_SPINTIME,         "spintime" },
-       { DEV_PARPORT_BASE_ADDR,        "base-addr" },
-       { DEV_PARPORT_IRQ,              "irq" },
-       { DEV_PARPORT_DMA,              "dma" },
-       { DEV_PARPORT_MODES,            "modes" },
-       { DEV_PARPORT_DEVICES,          "devices",      trans_parport_devices_table },
-       { DEV_PARPORT_AUTOPROBE,        "autoprobe" },
-       { DEV_PARPORT_AUTOPROBE + 1,    "autoprobe0" },
-       { DEV_PARPORT_AUTOPROBE + 2,    "autoprobe1" },
-       { DEV_PARPORT_AUTOPROBE + 3,    "autoprobe2" },
-       { DEV_PARPORT_AUTOPROBE + 4,    "autoprobe3" },
-       {}
-};
-static const struct trans_ctl_table trans_parport_table[] = {
-       { DEV_PARPORT_DEFAULT,  "default",      trans_parport_default_table },
-       { 0, NULL, trans_parport_parport_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_dev_table[] = {
-       { DEV_CDROM,    "cdrom",        trans_cdrom_table },
-       /* DEV_HWMON unused */
-       { DEV_PARPORT,  "parport",      trans_parport_table },
-       { DEV_RAID,     "raid",         trans_raid_table },
-       { DEV_MAC_HID,  "mac_hid",      trans_mac_hid_files },
-       { DEV_SCSI,     "scsi",         trans_scsi_table },
-       { DEV_IPMI,     "ipmi",         trans_ipmi_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_bus_isa_table[] = {
-       { BUS_ISA_MEM_BASE,     "membase" },
-       { BUS_ISA_PORT_BASE,    "portbase" },
-       { BUS_ISA_PORT_SHIFT,   "portshift" },
-       {}
-};
-
-static const struct trans_ctl_table trans_bus_table[] = {
-       { CTL_BUS_ISA,  "isa",  trans_bus_isa_table },
-       {}
-};
-
-static const struct trans_ctl_table trans_arlan_conf_table0[] = {
-       { 1,    "spreadingCode" },
-       { 2,    "channelNumber" },
-       { 3,    "scramblingDisable" },
-       { 4,    "txAttenuation" },
-       { 5,    "systemId" },
-       { 6,    "maxDatagramSize" },
-       { 7,    "maxFrameSize" },
-       { 8,    "maxRetries" },
-       { 9,    "receiveMode" },
-       { 10,   "priority" },
-       { 11,   "rootOrRepeater" },
-       { 12,   "SID" },
-       { 13,   "registrationMode" },
-       { 14,   "registrationFill" },
-       { 15,   "localTalkAddress" },
-       { 16,   "codeFormat" },
-       { 17,   "numChannels" },
-       { 18,   "channel1" },
-       { 19,   "channel2" },
-       { 20,   "channel3" },
-       { 21,   "channel4" },
-       { 22,   "txClear" },
-       { 23,   "txRetries" },
-       { 24,   "txRouting" },
-       { 25,   "txScrambled" },
-       { 26,   "rxParameter" },
-       { 27,   "txTimeoutMs" },
-       { 28,   "waitCardTimeout" },
-       { 29,   "channelSet" },
-       { 30,   "name" },
-       { 31,   "waitTime" },
-       { 32,   "lParameter" },
-       { 33,   "_15" },
-       { 34,   "headerSize" },
-       { 36,   "tx_delay_ms" },
-       { 37,   "retries" },
-       { 38,   "ReTransmitPacketMaxSize" },
-       { 39,   "waitReTransmitPacketMaxSize" },
-       { 40,   "fastReTransCount" },
-       { 41,   "driverRetransmissions" },
-       { 42,   "txAckTimeoutMs" },
-       { 43,   "registrationInterrupts" },
-       { 44,   "hardwareType" },
-       { 45,   "radioType" },
-       { 46,   "writeEEPROM" },
-       { 47,   "writeRadioType" },
-       { 48,   "entry_exit_debug" },
-       { 49,   "debug" },
-       { 50,   "in_speed" },
-       { 51,   "out_speed" },
-       { 52,   "in_speed10" },
-       { 53,   "out_speed10" },
-       { 54,   "in_speed_max" },
-       { 55,   "out_speed_max" },
-       { 56,   "measure_rate" },
-       { 57,   "pre_Command_Wait" },
-       { 58,   "rx_tweak1" },
-       { 59,   "rx_tweak2" },
-       { 60,   "tx_queue_len" },
-
-       { 150,  "arlan0-txRing" },
-       { 151,  "arlan0-rxRing" },
-       { 152,  "arlan0-18" },
-       { 153,  "arlan0-ring" },
-       { 154,  "arlan0-shm-cpy" },
-       { 155,  "config0" },
-       { 156,  "reset0" },
-       {}
-};
-
-static const struct trans_ctl_table trans_arlan_conf_table1[] = {
-       { 1,    "spreadingCode" },
-       { 2,    "channelNumber" },
-       { 3,    "scramblingDisable" },
-       { 4,    "txAttenuation" },
-       { 5,    "systemId" },
-       { 6,    "maxDatagramSize" },
-       { 7,    "maxFrameSize" },
-       { 8,    "maxRetries" },
-       { 9,    "receiveMode" },
-       { 10,   "priority" },
-       { 11,   "rootOrRepeater" },
-       { 12,   "SID" },
-       { 13,   "registrationMode" },
-       { 14,   "registrationFill" },
-       { 15,   "localTalkAddress" },
-       { 16,   "codeFormat" },
-       { 17,   "numChannels" },
-       { 18,   "channel1" },
-       { 19,   "channel2" },
-       { 20,   "channel3" },
-       { 21,   "channel4" },
-       { 22,   "txClear" },
-       { 23,   "txRetries" },
-       { 24,   "txRouting" },
-       { 25,   "txScrambled" },
-       { 26,   "rxParameter" },
-       { 27,   "txTimeoutMs" },
-       { 28,   "waitCardTimeout" },
-       { 29,   "channelSet" },
-       { 30,   "name" },
-       { 31,   "waitTime" },
-       { 32,   "lParameter" },
-       { 33,   "_15" },
-       { 34,   "headerSize" },
-       { 36,   "tx_delay_ms" },
-       { 37,   "retries" },
-       { 38,   "ReTransmitPacketMaxSize" },
-       { 39,   "waitReTransmitPacketMaxSize" },
-       { 40,   "fastReTransCount" },
-       { 41,   "driverRetransmissions" },
-       { 42,   "txAckTimeoutMs" },
-       { 43,   "registrationInterrupts" },
-       { 44,   "hardwareType" },
-       { 45,   "radioType" },
-       { 46,   "writeEEPROM" },
-       { 47,   "writeRadioType" },
-       { 48,   "entry_exit_debug" },
-       { 49,   "debug" },
-       { 50,   "in_speed" },
-       { 51,   "out_speed" },
-       { 52,   "in_speed10" },
-       { 53,   "out_speed10" },
-       { 54,   "in_speed_max" },
-       { 55,   "out_speed_max" },
-       { 56,   "measure_rate" },
-       { 57,   "pre_Command_Wait" },
-       { 58,   "rx_tweak1" },
-       { 59,   "rx_tweak2" },
-       { 60,   "tx_queue_len" },
-
-       { 150,  "arlan1-txRing" },
-       { 151,  "arlan1-rxRing" },
-       { 152,  "arlan1-18" },
-       { 153,  "arlan1-ring" },
-       { 154,  "arlan1-shm-cpy" },
-       { 155,  "config1" },
-       { 156,  "reset1" },
-       {}
-};
-
-static const struct trans_ctl_table trans_arlan_conf_table2[] = {
-       { 1,    "spreadingCode" },
-       { 2,    "channelNumber" },
-       { 3,    "scramblingDisable" },
-       { 4,    "txAttenuation" },
-       { 5,    "systemId" },
-       { 6,    "maxDatagramSize" },
-       { 7,    "maxFrameSize" },
-       { 8,    "maxRetries" },
-       { 9,    "receiveMode" },
-       { 10,   "priority" },
-       { 11,   "rootOrRepeater" },
-       { 12,   "SID" },
-       { 13,   "registrationMode" },
-       { 14,   "registrationFill" },
-       { 15,   "localTalkAddress" },
-       { 16,   "codeFormat" },
-       { 17,   "numChannels" },
-       { 18,   "channel1" },
-       { 19,   "channel2" },
-       { 20,   "channel3" },
-       { 21,   "channel4" },
-       { 22,   "txClear" },
-       { 23,   "txRetries" },
-       { 24,   "txRouting" },
-       { 25,   "txScrambled" },
-       { 26,   "rxParameter" },
-       { 27,   "txTimeoutMs" },
-       { 28,   "waitCardTimeout" },
-       { 29,   "channelSet" },
-       { 30,   "name" },
-       { 31,   "waitTime" },
-       { 32,   "lParameter" },
-       { 33,   "_15" },
-       { 34,   "headerSize" },
-       { 36,   "tx_delay_ms" },
-       { 37,   "retries" },
-       { 38,   "ReTransmitPacketMaxSize" },
-       { 39,   "waitReTransmitPacketMaxSize" },
-       { 40,   "fastReTransCount" },
-       { 41,   "driverRetransmissions" },
-       { 42,   "txAckTimeoutMs" },
-       { 43,   "registrationInterrupts" },
-       { 44,   "hardwareType" },
-       { 45,   "radioType" },
-       { 46,   "writeEEPROM" },
-       { 47,   "writeRadioType" },
-       { 48,   "entry_exit_debug" },
-       { 49,   "debug" },
-       { 50,   "in_speed" },
-       { 51,   "out_speed" },
-       { 52,   "in_speed10" },
-       { 53,   "out_speed10" },
-       { 54,   "in_speed_max" },
-       { 55,   "out_speed_max" },
-       { 56,   "measure_rate" },
-       { 57,   "pre_Command_Wait" },
-       { 58,   "rx_tweak1" },
-       { 59,   "rx_tweak2" },
-       { 60,   "tx_queue_len" },
-
-       { 150,  "arlan2-txRing" },
-       { 151,  "arlan2-rxRing" },
-       { 152,  "arlan2-18" },
-       { 153,  "arlan2-ring" },
-       { 154,  "arlan2-shm-cpy" },
-       { 155,  "config2" },
-       { 156,  "reset2" },
-       {}
-};
-
-static const struct trans_ctl_table trans_arlan_conf_table3[] = {
-       { 1,    "spreadingCode" },
-       { 2,    "channelNumber" },
-       { 3,    "scramblingDisable" },
-       { 4,    "txAttenuation" },
-       { 5,    "systemId" },
-       { 6,    "maxDatagramSize" },
-       { 7,    "maxFrameSize" },
-       { 8,    "maxRetries" },
-       { 9,    "receiveMode" },
-       { 10,   "priority" },
-       { 11,   "rootOrRepeater" },
-       { 12,   "SID" },
-       { 13,   "registrationMode" },
-       { 14,   "registrationFill" },
-       { 15,   "localTalkAddress" },
-       { 16,   "codeFormat" },
-       { 17,   "numChannels" },
-       { 18,   "channel1" },
-       { 19,   "channel2" },
-       { 20,   "channel3" },
-       { 21,   "channel4" },
-       { 22,   "txClear" },
-       { 23,   "txRetries" },
-       { 24,   "txRouting" },
-       { 25,   "txScrambled" },
-       { 26,   "rxParameter" },
-       { 27,   "txTimeoutMs" },
-       { 28,   "waitCardTimeout" },
-       { 29,   "channelSet" },
-       { 30,   "name" },
-       { 31,   "waitTime" },
-       { 32,   "lParameter" },
-       { 33,   "_15" },
-       { 34,   "headerSize" },
-       { 36,   "tx_delay_ms" },
-       { 37,   "retries" },
-       { 38,   "ReTransmitPacketMaxSize" },
-       { 39,   "waitReTransmitPacketMaxSize" },
-       { 40,   "fastReTransCount" },
-       { 41,   "driverRetransmissions" },
-       { 42,   "txAckTimeoutMs" },
-       { 43,   "registrationInterrupts" },
-       { 44,   "hardwareType" },
-       { 45,   "radioType" },
-       { 46,   "writeEEPROM" },
-       { 47,   "writeRadioType" },
-       { 48,   "entry_exit_debug" },
-       { 49,   "debug" },
-       { 50,   "in_speed" },
-       { 51,   "out_speed" },
-       { 52,   "in_speed10" },
-       { 53,   "out_speed10" },
-       { 54,   "in_speed_max" },
-       { 55,   "out_speed_max" },
-       { 56,   "measure_rate" },
-       { 57,   "pre_Command_Wait" },
-       { 58,   "rx_tweak1" },
-       { 59,   "rx_tweak2" },
-       { 60,   "tx_queue_len" },
-
-       { 150,  "arlan3-txRing" },
-       { 151,  "arlan3-rxRing" },
-       { 152,  "arlan3-18" },
-       { 153,  "arlan3-ring" },
-       { 154,  "arlan3-shm-cpy" },
-       { 155,  "config3" },
-       { 156,  "reset3" },
-       {}
-};
-
-static const struct trans_ctl_table trans_arlan_table[] = {
-       { 1,            "arlan0",       trans_arlan_conf_table0 },
-       { 2,            "arlan1",       trans_arlan_conf_table1 },
-       { 3,            "arlan2",       trans_arlan_conf_table2 },
-       { 4,            "arlan3",       trans_arlan_conf_table3 },
-       {}
-};
-
-static const struct trans_ctl_table trans_s390dbf_table[] = {
-       { 5678 /* CTL_S390DBF_STOPPABLE */,     "debug_stoppable" },
-       { 5679 /* CTL_S390DBF_ACTIVE */,        "debug_active" },
-       {}
-};
-
-static const struct trans_ctl_table trans_sunrpc_table[] = {
-       { CTL_RPCDEBUG,         "rpc_debug" },
-       { CTL_NFSDEBUG,         "nfs_debug" },
-       { CTL_NFSDDEBUG,        "nfsd_debug" },
-       { CTL_NLMDEBUG,         "nlm_debug" },
-       { CTL_SLOTTABLE_UDP,    "udp_slot_table_entries" },
-       { CTL_SLOTTABLE_TCP,    "tcp_slot_table_entries" },
-       { CTL_MIN_RESVPORT,     "min_resvport" },
-       { CTL_MAX_RESVPORT,     "max_resvport" },
-       {}
-};
-
-static const struct trans_ctl_table trans_pm_table[] = {
-       { 1 /* CTL_PM_SUSPEND */,       "suspend" },
-       { 2 /* CTL_PM_CMODE */,         "cmode" },
-       { 3 /* CTL_PM_P0 */,            "p0" },
-       { 4 /* CTL_PM_CM */,            "cm" },
-       {}
-};
-
-static const struct trans_ctl_table trans_frv_table[] = {
-       { 1,    "cache-mode" },
-       { 2,    "pin-cxnr" },
-       {}
-};
-
-static const struct trans_ctl_table trans_root_table[] = {
-       { CTL_KERN,     "kernel",       trans_kern_table },
-       { CTL_VM,       "vm",           trans_vm_table },
-       { CTL_NET,      "net",          trans_net_table },
-       /* CTL_PROC not used */
-       { CTL_FS,       "fs",           trans_fs_table },
-       { CTL_DEBUG,    "debug",        trans_debug_table },
-       { CTL_DEV,      "dev",          trans_dev_table },
-       { CTL_BUS,      "bus",          trans_bus_table },
-       { CTL_ABI,      "abi" },
-       /* CTL_CPU not used */
-       { CTL_ARLAN,    "arlan",        trans_arlan_table },
-       { CTL_S390DBF,  "s390dbf",      trans_s390dbf_table },
-       { CTL_SUNRPC,   "sunrpc",       trans_sunrpc_table },
-       { CTL_PM,       "pm",           trans_pm_table },
-       { CTL_FRV,      "frv",          trans_frv_table },
-       {}
-};
-
-
-
 
 static int sysctl_depth(struct ctl_table *table)
 {
@@ -1261,47 +28,6 @@ static struct ctl_table *sysctl_parent(struct ctl_table *table, int n)
        return table;
 }
 
-static const struct trans_ctl_table *sysctl_binary_lookup(struct ctl_table *table)
-{
-       struct ctl_table *test;
-       const struct trans_ctl_table *ref;
-       int cur_depth;
-
-       cur_depth = sysctl_depth(table);
-
-       ref = trans_root_table;
-repeat:
-       test = sysctl_parent(table, cur_depth);
-       for (; ref->ctl_name || ref->procname || ref->child; ref++) {
-               int match = 0;
-
-               if (cur_depth && !ref->child)
-                       continue;
-
-               if (test->procname && ref->procname &&
-                       (strcmp(test->procname, ref->procname) == 0))
-                       match++;
-
-               if (test->ctl_name && ref->ctl_name &&
-                       (test->ctl_name == ref->ctl_name))
-                       match++;
-
-               if (!ref->ctl_name && !ref->procname)
-                       match++;
-
-               if (match) {
-                       if (cur_depth != 0) {
-                               cur_depth--;
-                               ref = ref->child;
-                               goto repeat;
-                       }
-                       goto out;
-               }
-       }
-       ref = NULL;
-out:
-       return ref;
-}
 
 static void sysctl_print_path(struct ctl_table *table)
 {
@@ -1315,26 +41,6 @@ static void sysctl_print_path(struct ctl_table *table)
                }
        }
        printk(" ");
-       if (table->ctl_name) {
-               for (i = depth; i >= 0; i--) {
-                       tmp = sysctl_parent(table, i);
-                       printk(".%d", tmp->ctl_name);
-               }
-       }
-}
-
-static void sysctl_repair_table(struct ctl_table *table)
-{
-       /* Don't complain about the classic default
-        * sysctl strategy routine.  Maybe later we
-        * can get the tables fixed and complain about
-        * this.
-        */
-       if (table->ctl_name && table->procname &&
-               (table->proc_handler == proc_dointvec) &&
-               (!table->strategy)) {
-               table->strategy = sysctl_data;
-       }
 }
 
 static struct ctl_table *sysctl_check_lookup(struct nsproxy *namespaces,
@@ -1352,7 +58,7 @@ static struct ctl_table *sysctl_check_lookup(struct nsproxy *namespaces,
                ref = head->ctl_table;
 repeat:
                test = sysctl_parent(table, cur_depth);
-               for (; ref->ctl_name || ref->procname; ref++) {
+               for (; ref->procname; ref++) {
                        int match = 0;
                        if (cur_depth && !ref->child)
                                continue;
@@ -1361,10 +67,6 @@ repeat:
                            (strcmp(test->procname, ref->procname) == 0))
                                        match++;
 
-                       if (test->ctl_name && ref->ctl_name &&
-                           (test->ctl_name == ref->ctl_name))
-                               match++;
-
                        if (match) {
                                if (cur_depth != 0) {
                                        cur_depth--;
@@ -1392,38 +94,6 @@ static void set_fail(const char **fail, struct ctl_table *table, const char *str
        *fail = str;
 }
 
-static int sysctl_check_dir(struct nsproxy *namespaces,
-                               struct ctl_table *table)
-{
-       struct ctl_table *ref;
-       int error;
-
-       error = 0;
-       ref = sysctl_check_lookup(namespaces, table);
-       if (ref) {
-               int match = 0;
-               if ((!table->procname && !ref->procname) ||
-                   (table->procname && ref->procname &&
-                    (strcmp(table->procname, ref->procname) == 0)))
-                       match++;
-
-               if ((!table->ctl_name && !ref->ctl_name) ||
-                   (table->ctl_name && ref->ctl_name &&
-                    (table->ctl_name == ref->ctl_name)))
-                       match++;
-
-               if (match != 2) {
-                       printk(KERN_ERR "%s: failed: ", __func__);
-                       sysctl_print_path(table);
-                       printk(" ref: ");
-                       sysctl_print_path(ref);
-                       printk("\n");
-                       error = -EINVAL;
-               }
-       }
-       return error;
-}
-
 static void sysctl_check_leaf(struct nsproxy *namespaces,
                                struct ctl_table *table, const char **fail)
 {
@@ -1434,37 +104,15 @@ static void sysctl_check_leaf(struct nsproxy *namespaces,
                set_fail(fail, table, "Sysctl already exists");
 }
 
-static void sysctl_check_bin_path(struct ctl_table *table, const char **fail)
-{
-       const struct trans_ctl_table *ref;
-
-       ref = sysctl_binary_lookup(table);
-       if (table->ctl_name && !ref)
-               set_fail(fail, table, "Unknown sysctl binary path");
-       if (ref) {
-               if (ref->procname &&
-                   (!table->procname ||
-                    (strcmp(table->procname, ref->procname) != 0)))
-                       set_fail(fail, table, "procname does not match binary path procname");
-
-               if (ref->ctl_name && table->ctl_name &&
-                   (table->ctl_name != ref->ctl_name))
-                       set_fail(fail, table, "ctl_name does not match binary path ctl_name");
-       }
-}
-
 int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table)
 {
        int error = 0;
-       for (; table->ctl_name || table->procname; table++) {
+       for (; table->procname; table++) {
                const char *fail = NULL;
 
-               sysctl_repair_table(table);
                if (table->parent) {
                        if (table->procname && !table->parent->procname)
                                set_fail(&fail, table, "Parent without procname");
-                       if (table->ctl_name && !table->parent->ctl_name)
-                               set_fail(&fail, table, "Parent without ctl_name");
                }
                if (!table->procname)
                        set_fail(&fail, table, "No procname");
@@ -1477,21 +125,12 @@ int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table)
                                set_fail(&fail, table, "Writable sysctl directory");
                        if (table->proc_handler)
                                set_fail(&fail, table, "Directory with proc_handler");
-                       if (table->strategy)
-                               set_fail(&fail, table, "Directory with strategy");
                        if (table->extra1)
                                set_fail(&fail, table, "Directory with extra1");
                        if (table->extra2)
                                set_fail(&fail, table, "Directory with extra2");
-                       if (sysctl_check_dir(namespaces, table))
-                               set_fail(&fail, table, "Inconsistent directory names");
                } else {
-                       if ((table->strategy == sysctl_data) ||
-                           (table->strategy == sysctl_string) ||
-                           (table->strategy == sysctl_intvec) ||
-                           (table->strategy == sysctl_jiffies) ||
-                           (table->strategy == sysctl_ms_jiffies) ||
-                           (table->proc_handler == proc_dostring) ||
+                       if ((table->proc_handler == proc_dostring) ||
                            (table->proc_handler == proc_dointvec) ||
                            (table->proc_handler == proc_dointvec_minmax) ||
                            (table->proc_handler == proc_dointvec_jiffies) ||
@@ -1513,14 +152,6 @@ int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table)
                                                set_fail(&fail, table, "No max");
                                }
                        }
-#ifdef CONFIG_SYSCTL_SYSCALL
-                       if (table->ctl_name && !table->strategy)
-                               set_fail(&fail, table, "Missing strategy");
-#endif
-#if 0
-                       if (!table->ctl_name && table->strategy)
-                               set_fail(&fail, table, "Strategy without ctl_name");
-#endif
 #ifdef CONFIG_PROC_SYSCTL
                        if (table->procname && !table->proc_handler)
                                set_fail(&fail, table, "No proc_handler");
@@ -1531,7 +162,6 @@ int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table)
 #endif
                        sysctl_check_leaf(namespaces, table, &fail);
                }
-               sysctl_check_bin_path(table, &fail);
                if (table->mode > 0777)
                        set_fail(&fail, table, "bogus .mode");
                if (fail) {
index 69eae35..a2cd77e 100644 (file)
@@ -57,78 +57,47 @@ static int proc_do_uts_string(ctl_table *table, int write,
 #define proc_do_uts_string NULL
 #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[] = {
        {
-               .ctl_name       = KERN_OSTYPE,
                .procname       = "ostype",
                .data           = init_uts_ns.name.sysname,
                .maxlen         = sizeof(init_uts_ns.name.sysname),
                .mode           = 0444,
                .proc_handler   = proc_do_uts_string,
-               .strategy       = sysctl_uts_string,
        },
        {
-               .ctl_name       = KERN_OSRELEASE,
                .procname       = "osrelease",
                .data           = init_uts_ns.name.release,
                .maxlen         = sizeof(init_uts_ns.name.release),
                .mode           = 0444,
                .proc_handler   = proc_do_uts_string,
-               .strategy       = sysctl_uts_string,
        },
        {
-               .ctl_name       = KERN_VERSION,
                .procname       = "version",
                .data           = init_uts_ns.name.version,
                .maxlen         = sizeof(init_uts_ns.name.version),
                .mode           = 0444,
                .proc_handler   = proc_do_uts_string,
-               .strategy       = sysctl_uts_string,
        },
        {
-               .ctl_name       = KERN_NODENAME,
                .procname       = "hostname",
                .data           = init_uts_ns.name.nodename,
                .maxlen         = sizeof(init_uts_ns.name.nodename),
                .mode           = 0644,
                .proc_handler   = proc_do_uts_string,
-               .strategy       = sysctl_uts_string,
        },
        {
-               .ctl_name       = KERN_DOMAINNAME,
                .procname       = "domainname",
                .data           = init_uts_ns.name.domainname,
                .maxlen         = sizeof(init_uts_ns.name.domainname),
                .mode           = 0644,
                .proc_handler   = proc_do_uts_string,
-               .strategy       = sysctl_uts_string,
        },
        {}
 };
 
 static struct ctl_table uts_root_table[] = {
        {
-               .ctl_name       = CTL_KERN,
                .procname       = "kernel",
                .mode           = 0555,
                .child          = uts_kern_table,
index a79c4d0..0b8f359 100644 (file)
@@ -912,7 +912,7 @@ config LATENCYTOP
 
 config SYSCTL_SYSCALL_CHECK
        bool "Sysctl checks"
-       depends on SYSCTL_SYSCALL
+       depends on SYSCTL
        ---help---
          sys_sysctl uses binary paths that have been found challenging
          to properly maintain and use. This enables checks that help
index e874447..44acce4 100644 (file)
@@ -635,19 +635,18 @@ struct net_device *alloc_trdev(int sizeof_priv)
 #ifdef CONFIG_SYSCTL
 static struct ctl_table tr_table[] = {
        {
-               .ctl_name       = NET_TR_RIF_TIMEOUT,
                .procname       = "rif_timeout",
                .data           = &sysctl_tr_rif_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       { },
+       { },
 };
 
 static __initdata struct ctl_path tr_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "token-ring", .ctl_name = NET_TR, },
+       { .procname = "net", },
+       { .procname = "token-ring", },
        { }
 };
 #endif
index 8d237b1..04e9c0d 100644 (file)
 
 static struct ctl_table atalk_table[] = {
        {
-               .ctl_name       = NET_ATALK_AARP_EXPIRY_TIME,
                .procname       = "aarp-expiry-time",
                .data           = &sysctl_aarp_expiry_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_ATALK_AARP_TICK_TIME,
                .procname       = "aarp-tick-time",
                .data           = &sysctl_aarp_tick_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_ATALK_AARP_RETRANSMIT_LIMIT,
                .procname       = "aarp-retransmit-limit",
                .data           = &sysctl_aarp_retransmit_limit,
                .maxlen         = sizeof(int),
@@ -38,20 +33,18 @@ static struct ctl_table atalk_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_ATALK_AARP_RESOLVE_TIME,
                .procname       = "aarp-resolve-time",
                .data           = &sysctl_aarp_resolve_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
-       { },
+       { },
 };
 
 static struct ctl_path atalk_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "appletalk", .ctl_name = NET_ATALK, },
+       { .procname = "net", },
+       { .procname = "appletalk", },
        { }
 };
 
index 62ee3fb..5159be6 100644 (file)
@@ -34,156 +34,128 @@ static ctl_table *ax25_table;
 static int ax25_table_size;
 
 static struct ctl_path ax25_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "ax25", .ctl_name = NET_AX25, },
+       { .procname = "net", },
+       { .procname = "ax25", },
        { }
 };
 
 static const ctl_table ax25_param_table[] = {
        {
-               .ctl_name       = NET_AX25_IP_DEFAULT_MODE,
                .procname       = "ip_default_mode",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_ipdefmode,
                .extra2         = &max_ipdefmode
        },
        {
-               .ctl_name       = NET_AX25_DEFAULT_MODE,
                .procname       = "ax25_default_mode",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_axdefmode,
                .extra2         = &max_axdefmode
        },
        {
-               .ctl_name       = NET_AX25_BACKOFF_TYPE,
                .procname       = "backoff_type",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_backoff,
                .extra2         = &max_backoff
        },
        {
-               .ctl_name       = NET_AX25_CONNECT_MODE,
                .procname       = "connect_mode",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_conmode,
                .extra2         = &max_conmode
        },
        {
-               .ctl_name       = NET_AX25_STANDARD_WINDOW,
                .procname       = "standard_window_size",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_window,
                .extra2         = &max_window
        },
        {
-               .ctl_name       = NET_AX25_EXTENDED_WINDOW,
                .procname       = "extended_window_size",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_ewindow,
                .extra2         = &max_ewindow
        },
        {
-               .ctl_name       = NET_AX25_T1_TIMEOUT,
                .procname       = "t1_timeout",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_t1,
                .extra2         = &max_t1
        },
        {
-               .ctl_name       = NET_AX25_T2_TIMEOUT,
                .procname       = "t2_timeout",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_t2,
                .extra2         = &max_t2
        },
        {
-               .ctl_name       = NET_AX25_T3_TIMEOUT,
                .procname       = "t3_timeout",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_t3,
                .extra2         = &max_t3
        },
        {
-               .ctl_name       = NET_AX25_IDLE_TIMEOUT,
                .procname       = "idle_timeout",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_idle,
                .extra2         = &max_idle
        },
        {
-               .ctl_name       = NET_AX25_N2,
                .procname       = "maximum_retry_count",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_n2,
                .extra2         = &max_n2
        },
        {
-               .ctl_name       = NET_AX25_PACLEN,
                .procname       = "maximum_packet_length",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_paclen,
                .extra2         = &max_paclen
        },
        {
-               .ctl_name       = NET_AX25_PROTOCOL,
                .procname       = "protocol",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_proto,
                .extra2         = &max_proto
        },
 #ifdef CONFIG_AX25_DAMA_SLAVE
        {
-               .ctl_name       = NET_AX25_DAMA_SLAVE_TIMEOUT,
                .procname       = "dama_slave_timeout",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_ds_timeout,
                .extra2         = &max_ds_timeout
        },
 #endif
 
-       { .ctl_name = 0 }       /* that's all, folks! */
+       { }     /* that's all, folks! */
 };
 
 void ax25_register_sysctl(void)
@@ -212,11 +184,9 @@ void ax25_register_sysctl(void)
                        return;
                }
                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].mode         = 0555;
 
-               child[AX25_MAX_VALUES].ctl_name = 0;    /* just in case... */
 
                for (k = 0; k < AX25_MAX_VALUES; k++)
                        child[k].data = &ax25_dev->values[k];
@@ -233,7 +203,7 @@ void ax25_unregister_sysctl(void)
        ctl_table *p;
        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(ax25_table);
 }
index a16a234..268e2e7 100644 (file)
@@ -1013,12 +1013,12 @@ static ctl_table brnf_table[] = {
                .mode           = 0644,
                .proc_handler   = brnf_sysctl_call_tables,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_path brnf_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "bridge", .ctl_name = NET_BRIDGE, },
+       { .procname = "net", },
+       { .procname = "bridge", },
        { }
 };
 #endif
index e587e68..2b54e6c 100644 (file)
@@ -2566,21 +2566,18 @@ static struct neigh_sysctl_table {
 } neigh_sysctl_template __read_mostly = {
        .neigh_vars = {
                {
-                       .ctl_name       = NET_NEIGH_MCAST_SOLICIT,
                        .procname       = "mcast_solicit",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec,
                },
                {
-                       .ctl_name       = NET_NEIGH_UCAST_SOLICIT,
                        .procname       = "ucast_solicit",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec,
                },
                {
-                       .ctl_name       = NET_NEIGH_APP_SOLICIT,
                        .procname       = "app_solicit",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
@@ -2593,38 +2590,30 @@ static struct neigh_sysctl_table {
                        .proc_handler   = proc_dointvec_userhz_jiffies,
                },
                {
-                       .ctl_name       = NET_NEIGH_REACHABLE_TIME,
                        .procname       = "base_reachable_time",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec_jiffies,
-                       .strategy       = sysctl_jiffies,
                },
                {
-                       .ctl_name       = NET_NEIGH_DELAY_PROBE_TIME,
                        .procname       = "delay_first_probe_time",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec_jiffies,
-                       .strategy       = sysctl_jiffies,
                },
                {
-                       .ctl_name       = NET_NEIGH_GC_STALE_TIME,
                        .procname       = "gc_stale_time",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec_jiffies,
-                       .strategy       = sysctl_jiffies,
                },
                {
-                       .ctl_name       = NET_NEIGH_UNRES_QLEN,
                        .procname       = "unres_qlen",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec,
                },
                {
-                       .ctl_name       = NET_NEIGH_PROXY_QLEN,
                        .procname       = "proxy_qlen",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
@@ -2649,45 +2638,36 @@ static struct neigh_sysctl_table {
                        .proc_handler   = proc_dointvec_userhz_jiffies,
                },
                {
-                       .ctl_name       = NET_NEIGH_RETRANS_TIME_MS,
                        .procname       = "retrans_time_ms",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec_ms_jiffies,
-                       .strategy       = sysctl_ms_jiffies,
                },
                {
-                       .ctl_name       = NET_NEIGH_REACHABLE_TIME_MS,
                        .procname       = "base_reachable_time_ms",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec_ms_jiffies,
-                       .strategy       = sysctl_ms_jiffies,
                },
                {
-                       .ctl_name       = NET_NEIGH_GC_INTERVAL,
                        .procname       = "gc_interval",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec_jiffies,
-                       .strategy       = sysctl_jiffies,
                },
                {
-                       .ctl_name       = NET_NEIGH_GC_THRESH1,
                        .procname       = "gc_thresh1",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec,
                },
                {
-                       .ctl_name       = NET_NEIGH_GC_THRESH2,
                        .procname       = "gc_thresh2",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
                        .proc_handler   = proc_dointvec,
                },
                {
-                       .ctl_name       = NET_NEIGH_GC_THRESH3,
                        .procname       = "gc_thresh3",
                        .maxlen         = sizeof(int),
                        .mode           = 0644,
@@ -2699,7 +2679,7 @@ static struct neigh_sysctl_table {
 
 int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
                          int p_id, int pdev_id, char *p_name,
-                         proc_handler *handler, ctl_handler *strategy)
+                         proc_handler *handler)
 {
        struct neigh_sysctl_table *t;
        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
 
        struct ctl_path neigh_path[] = {
-               { .procname = "net",     .ctl_name = CTL_NET, },
-               { .procname = "proto",   .ctl_name = 0, },
-               { .procname = "neigh",   .ctl_name = 0, },
-               { .procname = "default", .ctl_name = NET_PROTO_CONF_DEFAULT, },
+               { .procname = "net",     },
+               { .procname = "proto",   },
+               { .procname = "neigh",   },
+               { .procname = "default", },
                { },
        };
 
@@ -2738,7 +2718,6 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
 
        if (dev) {
                dev_name_source = dev->name;
-               neigh_path[NEIGH_CTL_PATH_DEV].ctl_name = dev->ifindex;
                /* Terminate the table early */
                memset(&t->neigh_vars[14], 0, sizeof(t->neigh_vars[14]));
        } else {
@@ -2750,31 +2729,19 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
        }
 
 
-       if (handler || strategy) {
+       if (handler) {
                /* RetransTime */
                t->neigh_vars[3].proc_handler = handler;
-               t->neigh_vars[3].strategy = strategy;
                t->neigh_vars[3].extra1 = dev;
-               if (!strategy)
-                       t->neigh_vars[3].ctl_name = CTL_UNNUMBERED;
                /* ReachableTime */
                t->neigh_vars[4].proc_handler = handler;
-               t->neigh_vars[4].strategy = strategy;
                t->neigh_vars[4].extra1 = dev;
-               if (!strategy)
-                       t->neigh_vars[4].ctl_name = CTL_UNNUMBERED;
                /* RetransTime (in milliseconds)*/
                t->neigh_vars[12].proc_handler = handler;
-               t->neigh_vars[12].strategy = strategy;
                t->neigh_vars[12].extra1 = dev;
-               if (!strategy)
-                       t->neigh_vars[12].ctl_name = CTL_UNNUMBERED;
                /* ReachableTime (in milliseconds) */
                t->neigh_vars[13].proc_handler = handler;
-               t->neigh_vars[13].strategy = strategy;
                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);
@@ -2782,9 +2749,7 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
                goto free;
 
        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].ctl_name = p_id;
 
        t->sysctl_header =
                register_net_sysctl_table(neigh_parms_net(p), neigh_path, t->neigh_vars);
index 887c03c..2673146 100644 (file)
@@ -19,7 +19,6 @@
 static struct ctl_table net_core_table[] = {
 #ifdef CONFIG_NET
        {
-               .ctl_name       = NET_CORE_WMEM_MAX,
                .procname       = "wmem_max",
                .data           = &sysctl_wmem_max,
                .maxlen         = sizeof(int),
@@ -27,7 +26,6 @@ static struct ctl_table net_core_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_CORE_RMEM_MAX,
                .procname       = "rmem_max",
                .data           = &sysctl_rmem_max,
                .maxlen         = sizeof(int),
@@ -35,7 +33,6 @@ static struct ctl_table net_core_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_CORE_WMEM_DEFAULT,
                .procname       = "wmem_default",
                .data           = &sysctl_wmem_default,
                .maxlen         = sizeof(int),
@@ -43,7 +40,6 @@ static struct ctl_table net_core_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_CORE_RMEM_DEFAULT,
                .procname       = "rmem_default",
                .data           = &sysctl_rmem_default,
                .maxlen         = sizeof(int),
@@ -51,7 +47,6 @@ static struct ctl_table net_core_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_CORE_DEV_WEIGHT,
                .procname       = "dev_weight",
                .data           = &weight_p,
                .maxlen         = sizeof(int),
@@ -59,7 +54,6 @@ static struct ctl_table net_core_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_CORE_MAX_BACKLOG,
                .procname       = "netdev_max_backlog",
                .data           = &netdev_max_backlog,
                .maxlen         = sizeof(int),
@@ -67,16 +61,13 @@ static struct ctl_table net_core_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_CORE_MSG_COST,
                .procname       = "message_cost",
                .data           = &net_ratelimit_state.interval,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_CORE_MSG_BURST,
                .procname       = "message_burst",
                .data           = &net_ratelimit_state.burst,
                .maxlen         = sizeof(int),
@@ -84,7 +75,6 @@ static struct ctl_table net_core_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_CORE_OPTMEM_MAX,
                .procname       = "optmem_max",
                .data           = &sysctl_optmem_max,
                .maxlen         = sizeof(int),
@@ -93,7 +83,6 @@ static struct ctl_table net_core_table[] = {
        },
 #endif /* CONFIG_NET */
        {
-               .ctl_name       = NET_CORE_BUDGET,
                .procname       = "netdev_budget",
                .data           = &netdev_budget,
                .maxlen         = sizeof(int),
@@ -101,31 +90,29 @@ static struct ctl_table net_core_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_CORE_WARNINGS,
                .procname       = "warnings",
                .data           = &net_msg_warn,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table netns_core_table[] = {
        {
-               .ctl_name       = NET_CORE_SOMAXCONN,
                .procname       = "somaxconn",
                .data           = &init_net.core.sysctl_somaxconn,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 __net_initdata struct ctl_path net_core_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "core", .ctl_name = NET_CORE, },
+       { .procname = "net", },
+       { .procname = "core", },
        { },
 };
 
index a5a1856..5639438 100644 (file)
@@ -93,13 +93,13 @@ static struct ctl_table dccp_default_table[] = {
                .proc_handler   = proc_dointvec_ms_jiffies,
        },
 
-       { .ctl_name = 0, }
+       { }
 };
 
 static struct ctl_path dccp_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "dccp", .ctl_name = NET_DCCP, },
-       { .procname = "default", .ctl_name = NET_DCCP_DEFAULT, },
+       { .procname = "net", },
+       { .procname = "dccp", },
+       { .procname = "default", },
        { }
 };
 
index 6e1f085..1b1daeb 100644 (file)
@@ -89,7 +89,6 @@ static struct dn_dev_parms dn_dev_list[] =  {
        .t2 =           1,
        .t3 =           10,
        .name =         "ethernet",
-       .ctl_name =     NET_DECNET_CONF_ETHER,
        .up =           dn_eth_up,
        .down =         dn_eth_down,
        .timer3 =       dn_send_brd_hello,
@@ -101,7 +100,6 @@ static struct dn_dev_parms dn_dev_list[] =  {
        .t2 =           1,
        .t3 =           10,
        .name =         "ipgre",
-       .ctl_name =     NET_DECNET_CONF_GRE,
        .timer3 =       dn_send_brd_hello,
 },
 #if 0
@@ -112,7 +110,6 @@ static struct dn_dev_parms dn_dev_list[] =  {
        .t2 =           1,
        .t3 =           120,
        .name =         "x25",
-       .ctl_name =     NET_DECNET_CONF_X25,
        .timer3 =       dn_send_ptp_hello,
 },
 #endif
@@ -124,7 +121,6 @@ static struct dn_dev_parms dn_dev_list[] =  {
        .t2 =           1,
        .t3 =           10,
        .name =         "ppp",
-       .ctl_name =     NET_DECNET_CONF_PPP,
        .timer3 =       dn_send_brd_hello,
 },
 #endif
@@ -135,7 +131,6 @@ static struct dn_dev_parms dn_dev_list[] =  {
        .t2 =           1,
        .t3 =           120,
        .name =         "ddcmp",
-       .ctl_name =     NET_DECNET_CONF_DDCMP,
        .timer3 =       dn_send_ptp_hello,
 },
 {
@@ -145,7 +140,6 @@ static struct dn_dev_parms dn_dev_list[] =  {
        .t2 =           1,
        .t3 =           10,
        .name =         "loopback",
-       .ctl_name =     NET_DECNET_CONF_LOOPBACK,
        .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,
                        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 {
        struct ctl_table_header *sysctl_header;
        ctl_table dn_dev_vars[5];
@@ -177,44 +167,36 @@ static struct dn_dev_sysctl_table {
        NULL,
        {
        {
-               .ctl_name = NET_DECNET_CONF_DEV_FORWARDING,
                .procname = "forwarding",
                .data = (void *)DN_DEV_PARMS_OFFSET(forwarding),
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = dn_forwarding_proc,
-               .strategy = dn_forwarding_sysctl,
        },
        {
-               .ctl_name = NET_DECNET_CONF_DEV_PRIORITY,
                .procname = "priority",
                .data = (void *)DN_DEV_PARMS_OFFSET(priority),
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy = sysctl_intvec,
                .extra1 = &min_priority,
                .extra2 = &max_priority
        },
        {
-               .ctl_name = NET_DECNET_CONF_DEV_T2,
                .procname = "t2",
                .data = (void *)DN_DEV_PARMS_OFFSET(t2),
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy = sysctl_intvec,
                .extra1 = &min_t2,
                .extra2 = &max_t2
        },
        {
-               .ctl_name = NET_DECNET_CONF_DEV_T3,
                .procname = "t3",
                .data = (void *)DN_DEV_PARMS_OFFSET(t3),
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy = sysctl_intvec,
                .extra1 = &min_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
 
        struct ctl_path dn_ctl_path[] = {
-               { .procname = "net", .ctl_name = CTL_NET, },
-               { .procname = "decnet", .ctl_name = NET_DECNET, },
-               { .procname = "conf", .ctl_name = NET_DECNET_CONF, },
+               { .procname = "net",  },
+               { .procname = "decnet",  },
+               { .procname = "conf",  },
                { /* to be set */ },
                { },
        };
@@ -248,10 +230,8 @@ static void dn_dev_sysctl_register(struct net_device *dev, struct dn_dev_parms *
 
        if (dev) {
                dn_ctl_path[DN_CTL_PATH_DEV].procname = dev->name;
-               dn_ctl_path[DN_CTL_PATH_DEV].ctl_name = dev->ifindex;
        } else {
                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;
@@ -317,44 +297,6 @@ static int dn_forwarding_proc(ctl_table *table, int write,
 #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 */
 static void dn_dev_sysctl_unregister(struct dn_dev_parms *parms)
 {
index 2036568..be3eb8e 100644 (file)
@@ -131,39 +131,6 @@ static int parse_addr(__le16 *addr, char *str)
        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,
                                void __user *buffer,
                                size_t *lenp, loff_t *ppos)
@@ -215,64 +182,6 @@ static int dn_node_address_handler(ctl_table *table, int write,
        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,
                                void __user *buffer,
                                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[] = {
        {
-               .ctl_name = NET_DECNET_NODE_ADDRESS,
                .procname = "node_address",
                .maxlen = 7,
                .mode = 0644,
                .proc_handler = dn_node_address_handler,
-               .strategy = dn_node_address_strategy,
        },
        {
-               .ctl_name = NET_DECNET_NODE_NAME,
                .procname = "node_name",
                .data = node_name,
                .maxlen = 7,
                .mode = 0644,
                .proc_handler = proc_dostring,
-               .strategy = sysctl_string,
        },
        {
-               .ctl_name = NET_DECNET_DEFAULT_DEVICE,
                .procname = "default_device",
                .maxlen = 16,
                .mode = 0644,
                .proc_handler = dn_def_dev_handler,
-               .strategy = dn_def_dev_strategy,
        },
        {
-               .ctl_name = NET_DECNET_TIME_WAIT,
                .procname = "time_wait",
                .data = &decnet_time_wait,
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy = sysctl_intvec,
                .extra1 = &min_decnet_time_wait,
                .extra2 = &max_decnet_time_wait
        },
        {
-               .ctl_name = NET_DECNET_DN_COUNT,
                .procname = "dn_count",
                .data = &decnet_dn_count,
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy = sysctl_intvec,
                .extra1 = &min_state_count,
                .extra2 = &max_state_count
        },
        {
-               .ctl_name = NET_DECNET_DI_COUNT,
                .procname = "di_count",
                .data = &decnet_di_count,
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy = sysctl_intvec,
                .extra1 = &min_state_count,
                .extra2 = &max_state_count
        },
        {
-               .ctl_name = NET_DECNET_DR_COUNT,
                .procname = "dr_count",
                .data = &decnet_dr_count,
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy = sysctl_intvec,
                .extra1 = &min_state_count,
                .extra2 = &max_state_count
        },
        {
-               .ctl_name = NET_DECNET_DST_GC_INTERVAL,
                .procname = "dst_gc_interval",
                .data = &decnet_dst_gc_interval,
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy = sysctl_intvec,
                .extra1 = &min_decnet_dst_gc_interval,
                .extra2 = &max_decnet_dst_gc_interval
        },
        {
-               .ctl_name = NET_DECNET_NO_FC_MAX_CWND,
                .procname = "no_fc_max_cwnd",
                .data = &decnet_no_fc_max_cwnd,
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy = sysctl_intvec,
                .extra1 = &min_decnet_no_fc_max_cwnd,
                .extra2 = &max_decnet_no_fc_max_cwnd
        },
        {
-               .ctl_name = NET_DECNET_MEM,
                .procname = "decnet_mem",
                .data = &sysctl_decnet_mem,
                .maxlen = sizeof(sysctl_decnet_mem),
                .mode = 0644,
                .proc_handler = proc_dointvec,
-               .strategy = sysctl_intvec,
        },
        {
-               .ctl_name = NET_DECNET_RMEM,
                .procname = "decnet_rmem",
                .data = &sysctl_decnet_rmem,
                .maxlen = sizeof(sysctl_decnet_rmem),
                .mode = 0644,
                .proc_handler = proc_dointvec,
-               .strategy = sysctl_intvec,
        },
        {
-               .ctl_name = NET_DECNET_WMEM,
                .procname = "decnet_wmem",
                .data = &sysctl_decnet_wmem,
                .maxlen = sizeof(sysctl_decnet_wmem),
                .mode = 0644,
                .proc_handler = proc_dointvec,
-               .strategy = sysctl_intvec,
        },
        {
-               .ctl_name = NET_DECNET_DEBUG_LEVEL,
                .procname = "debug",
                .data = &decnet_debug_level,
                .maxlen = sizeof(int),
                .mode = 0644,
                .proc_handler = proc_dointvec,
-               .strategy = sysctl_intvec,
        },
-       {0}
+       { }
 };
 
 static struct ctl_path dn_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "decnet", .ctl_name = NET_DECNET, },
+       { .procname = "net", },
+       { .procname = "decnet", },
        { }
 };
 
index 4e80f33..c95cd93 100644 (file)
@@ -1240,7 +1240,7 @@ void __init arp_init(void)
        arp_proc_init();
 #ifdef CONFIG_SYSCTL
        neigh_sysctl_register(NULL, &arp_tbl.parms, NET_IPV4,
-                             NET_IPV4_NEIGH, "ipv4", NULL, NULL);
+                             NET_IPV4_NEIGH, "ipv4", NULL);
 #endif
        register_netdevice_notifier(&arp_netdev_notifier);
 }
index 5df2f6a..e049da8 100644 (file)
@@ -1293,58 +1293,6 @@ static int devinet_conf_proc(ctl_table *ctl, int write,
        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,
                                  void __user *buffer,
                                  size_t *lenp, loff_t *ppos)
@@ -1390,47 +1338,28 @@ int ipv4_doint_and_flush(ctl_table *ctl, int write,
        return ret;
 }
 
-int ipv4_doint_and_flush_strategy(ctl_table *table,
-                                 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) \
+#define DEVINET_SYSCTL_ENTRY(attr, name, mval, proc) \
        { \
-               .ctl_name       = NET_IPV4_CONF_ ## attr, \
                .procname       = name, \
                .data           = ipv4_devconf.data + \
                                  NET_IPV4_CONF_ ## attr - 1, \
                .maxlen         = sizeof(int), \
                .mode           = mval, \
                .proc_handler   = proc, \
-               .strategy       = sysctl, \
                .extra1         = &ipv4_devconf, \
        }
 
 #define DEVINET_SYSCTL_RW_ENTRY(attr, name) \
-       DEVINET_SYSCTL_ENTRY(attr, name, 0644, devinet_conf_proc, \
-                            devinet_conf_sysctl)
+       DEVINET_SYSCTL_ENTRY(attr, name, 0644, devinet_conf_proc)
 
 #define DEVINET_SYSCTL_RO_ENTRY(attr, name) \
-       DEVINET_SYSCTL_ENTRY(attr, name, 0444, devinet_conf_proc, \
-                            devinet_conf_sysctl)
+       DEVINET_SYSCTL_ENTRY(attr, name, 0444, devinet_conf_proc)
 
-#define DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, proc, sysctl) \
-       DEVINET_SYSCTL_ENTRY(attr, name, 0644, proc, sysctl)
+#define DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, proc) \
+       DEVINET_SYSCTL_ENTRY(attr, name, 0644, proc)
 
 #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \
-       DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush, \
-                                    ipv4_doint_and_flush_strategy)
+       DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush)
 
 static struct devinet_sysctl_table {
        struct ctl_table_header *sysctl_header;
@@ -1439,8 +1368,7 @@ static struct devinet_sysctl_table {
 } devinet_sysctl = {
        .devinet_vars = {
                DEVINET_SYSCTL_COMPLEX_ENTRY(FORWARDING, "forwarding",
-                                            devinet_sysctl_forward,
-                                            devinet_conf_sysctl),
+                                            devinet_sysctl_forward),
                DEVINET_SYSCTL_RO_ENTRY(MC_FORWARDING, "mc_forwarding"),
 
                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,
-               int ctl_name, struct ipv4_devconf *p)
+                                       struct ipv4_devconf *p)
 {
        int i;
        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
 
        struct ctl_path devinet_ctl_path[] = {
-               { .procname = "net", .ctl_name = CTL_NET, },
-               { .procname = "ipv4", .ctl_name = NET_IPV4, },
-               { .procname = "conf", .ctl_name = NET_IPV4_CONF, },
+               { .procname = "net",  },
+               { .procname = "ipv4", },
+               { .procname = "conf", },
                { /* to be set */ },
                { },
        };
@@ -1506,7 +1434,6 @@ static int __devinet_sysctl_register(struct net *net, char *dev_name,
                goto free;
 
        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->devinet_vars);
@@ -1540,9 +1467,9 @@ static void __devinet_sysctl_unregister(struct ipv4_devconf *cnf)
 static void devinet_sysctl_register(struct in_device *idev)
 {
        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,
-                       idev->dev->ifindex, &idev->cnf);
+                                       &idev->cnf);
 }
 
 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[] = {
        {
-               .ctl_name       = NET_IPV4_FORWARD,
                .procname       = "ip_forward",
                .data           = &ipv4_devconf.data[
                                        NET_IPV4_CONF_FORWARDING - 1],
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = devinet_sysctl_forward,
-               .strategy       = devinet_conf_sysctl,
                .extra1         = &ipv4_devconf,
                .extra2         = &init_net,
        },
@@ -1568,8 +1493,8 @@ static struct ctl_table ctl_forward_entry[] = {
 };
 
 static __net_initdata struct ctl_path net_ipv4_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "ipv4", .ctl_name = NET_IPV4, },
+       { .procname = "net", },
+       { .procname = "ipv4", },
        { },
 };
 #endif
@@ -1608,13 +1533,11 @@ static __net_init int devinet_init_net(struct net *net)
        }
 
 #ifdef CONFIG_SYSCTL
-       err = __devinet_sysctl_register(net, "all",
-                       NET_PROTO_CONF_ALL, all);
+       err = __devinet_sysctl_register(net, "all", all);
        if (err < 0)
                goto err_reg_all;
 
-       err = __devinet_sysctl_register(net, "default",
-                       NET_PROTO_CONF_DEFAULT, dflt);
+       err = __devinet_sysctl_register(net, "default", dflt);
        if (err < 0)
                goto err_reg_dflt;
 
index d3fe10b..301a389 100644 (file)
@@ -603,7 +603,6 @@ static int zero;
 
 static struct ctl_table ip4_frags_ns_ctl_table[] = {
        {
-               .ctl_name       = NET_IPV4_IPFRAG_HIGH_THRESH,
                .procname       = "ipfrag_high_thresh",
                .data           = &init_net.ipv4.frags.high_thresh,
                .maxlen         = sizeof(int),
@@ -611,7 +610,6 @@ static struct ctl_table ip4_frags_ns_ctl_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_IPFRAG_LOW_THRESH,
                .procname       = "ipfrag_low_thresh",
                .data           = &init_net.ipv4.frags.low_thresh,
                .maxlen         = sizeof(int),
@@ -619,26 +617,22 @@ static struct ctl_table ip4_frags_ns_ctl_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_IPFRAG_TIME,
                .procname       = "ipfrag_time",
                .data           = &init_net.ipv4.frags.timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
        { }
 };
 
 static struct ctl_table ip4_frags_ctl_table[] = {
        {
-               .ctl_name       = NET_IPV4_IPFRAG_SECRET_INTERVAL,
                .procname       = "ipfrag_secret_interval",
                .data           = &ip4_frags.secret_interval,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
        {
                .procname       = "ipfrag_max_dist",
index 1725dc0..db52c0c 100644 (file)
@@ -248,9 +248,9 @@ module_exit(ipv4_netfilter_fini);
 
 #ifdef CONFIG_SYSCTL
 struct ctl_path nf_net_ipv4_netfilter_sysctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "ipv4", .ctl_name = NET_IPV4, },
-       { .procname = "netfilter", .ctl_name = NET_IPV4_NETFILTER, },
+       { .procname = "net", },
+       { .procname = "ipv4", },
+       { .procname = "netfilter", },
        { }
 };
 EXPORT_SYMBOL_GPL(nf_net_ipv4_netfilter_sysctl_path);
index c156db2..c9f90e8 100644 (file)
@@ -516,14 +516,13 @@ static struct ctl_table_header *ipq_sysctl_header;
 
 static ctl_table ipq_table[] = {
        {
-               .ctl_name       = NET_IPQ_QMAX,
                .procname       = NET_IPQ_QMAX_NAME,
                .data           = &queue_maxlen,
                .maxlen         = sizeof(queue_maxlen),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       { .ctl_name = 0 }
+       { }
 };
 #endif
 
index aa95bb8..092d68f 100644 (file)
@@ -195,7 +195,6 @@ static int log_invalid_proto_max = 255;
 
 static ctl_table ip_ct_sysctl_table[] = {
        {
-               .ctl_name       = NET_IPV4_NF_CONNTRACK_MAX,
                .procname       = "ip_conntrack_max",
                .data           = &nf_conntrack_max,
                .maxlen         = sizeof(int),
@@ -203,7 +202,6 @@ static ctl_table ip_ct_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_NF_CONNTRACK_COUNT,
                .procname       = "ip_conntrack_count",
                .data           = &init_net.ct.count,
                .maxlen         = sizeof(int),
@@ -211,7 +209,6 @@ static ctl_table ip_ct_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_NF_CONNTRACK_BUCKETS,
                .procname       = "ip_conntrack_buckets",
                .data           = &nf_conntrack_htable_size,
                .maxlen         = sizeof(unsigned int),
@@ -219,7 +216,6 @@ static ctl_table ip_ct_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_NF_CONNTRACK_CHECKSUM,
                .procname       = "ip_conntrack_checksum",
                .data           = &init_net.ct.sysctl_checksum,
                .maxlen         = sizeof(int),
@@ -227,19 +223,15 @@ static ctl_table ip_ct_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_NF_CONNTRACK_LOG_INVALID,
                .procname       = "ip_conntrack_log_invalid",
                .data           = &init_net.ct.sysctl_log_invalid,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &log_invalid_proto_min,
                .extra2         = &log_invalid_proto_max,
        },
-       {
-               .ctl_name       = 0
-       }
+       { }
 };
 #endif /* CONFIG_SYSCTL && CONFIG_NF_CONNTRACK_PROC_COMPAT */
 
index d71ba76..9072058 100644 (file)
@@ -270,9 +270,7 @@ static struct ctl_table icmp_sysctl_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name = 0
-       }
+       { }
 };
 #ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
 static struct ctl_table icmp_compat_sysctl_table[] = {
@@ -283,9 +281,7 @@ static struct ctl_table icmp_compat_sysctl_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name = 0
-       }
+       { }
 };
 #endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
 #endif /* CONFIG_SYSCTL */
index 5b1050a..0d9f584 100644 (file)
@@ -3056,23 +3056,6 @@ static int ipv4_sysctl_rtcache_flush(ctl_table *__ctl, int write,
        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)
 {
        struct net *net;
@@ -3117,23 +3100,8 @@ static int ipv4_sysctl_rt_secret_interval(ctl_table *ctl, int write,
        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[] = {
        {
-               .ctl_name       = NET_IPV4_ROUTE_GC_THRESH,
                .procname       = "gc_thresh",
                .data           = &ipv4_dst_ops.gc_thresh,
                .maxlen         = sizeof(int),
@@ -3141,7 +3109,6 @@ static ctl_table ipv4_route_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_MAX_SIZE,
                .procname       = "max_size",
                .data           = &ip_rt_max_size,
                .maxlen         = sizeof(int),
@@ -3151,43 +3118,34 @@ static ctl_table ipv4_route_table[] = {
        {
                /*  Deprecated. Use gc_min_interval_ms */
 
-               .ctl_name       = NET_IPV4_ROUTE_GC_MIN_INTERVAL,
                .procname       = "gc_min_interval",
                .data           = &ip_rt_gc_min_interval,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS,
                .procname       = "gc_min_interval_ms",
                .data           = &ip_rt_gc_min_interval,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_ms_jiffies,
-               .strategy       = sysctl_ms_jiffies,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_GC_TIMEOUT,
                .procname       = "gc_timeout",
                .data           = &ip_rt_gc_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_GC_INTERVAL,
                .procname       = "gc_interval",
                .data           = &ip_rt_gc_interval,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_REDIRECT_LOAD,
                .procname       = "redirect_load",
                .data           = &ip_rt_redirect_load,
                .maxlen         = sizeof(int),
@@ -3195,7 +3153,6 @@ static ctl_table ipv4_route_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_REDIRECT_NUMBER,
                .procname       = "redirect_number",
                .data           = &ip_rt_redirect_number,
                .maxlen         = sizeof(int),
@@ -3203,7 +3160,6 @@ static ctl_table ipv4_route_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_REDIRECT_SILENCE,
                .procname       = "redirect_silence",
                .data           = &ip_rt_redirect_silence,
                .maxlen         = sizeof(int),
@@ -3211,7 +3167,6 @@ static ctl_table ipv4_route_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_ERROR_COST,
                .procname       = "error_cost",
                .data           = &ip_rt_error_cost,
                .maxlen         = sizeof(int),
@@ -3219,7 +3174,6 @@ static ctl_table ipv4_route_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_ERROR_BURST,
                .procname       = "error_burst",
                .data           = &ip_rt_error_burst,
                .maxlen         = sizeof(int),
@@ -3227,7 +3181,6 @@ static ctl_table ipv4_route_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_GC_ELASTICITY,
                .procname       = "gc_elasticity",
                .data           = &ip_rt_gc_elasticity,
                .maxlen         = sizeof(int),
@@ -3235,16 +3188,13 @@ static ctl_table ipv4_route_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_MTU_EXPIRES,
                .procname       = "mtu_expires",
                .data           = &ip_rt_mtu_expires,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_MIN_PMTU,
                .procname       = "min_pmtu",
                .data           = &ip_rt_min_pmtu,
                .maxlen         = sizeof(int),
@@ -3252,7 +3202,6 @@ static ctl_table ipv4_route_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_MIN_ADVMSS,
                .procname       = "min_adv_mss",
                .data           = &ip_rt_min_advmss,
                .maxlen         = sizeof(int),
@@ -3260,50 +3209,46 @@ static ctl_table ipv4_route_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_ROUTE_SECRET_INTERVAL,
                .procname       = "secret_interval",
                .data           = &ip_rt_secret_interval,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .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 ipv4_skeleton[] =
 {
-       { .procname = "route", .ctl_name = NET_IPV4_ROUTE,
+       { .procname = "route", 
          .mode = 0555, .child = ipv4_route_table},
-       { .procname = "neigh", .ctl_name = NET_IPV4_NEIGH,
+       { .procname = "neigh", 
          .mode = 0555, .child = empty},
        { }
 };
 
 static __net_initdata struct ctl_path ipv4_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "ipv4", .ctl_name = NET_IPV4, },
+       { .procname = "net", },
+       { .procname = "ipv4", },
        { },
 };
 
 static struct ctl_table ipv4_route_flush_table[] = {
        {
-               .ctl_name       = NET_IPV4_ROUTE_FLUSH,
                .procname       = "flush",
                .maxlen         = sizeof(int),
                .mode           = 0200,
                .proc_handler   = ipv4_sysctl_rtcache_flush,
-               .strategy       = ipv4_sysctl_rtcache_flush_strategy,
        },
-       { .ctl_name = 0 },
+       { },
 };
 
 static __net_initdata struct ctl_path ipv4_route_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "ipv4", .ctl_name = NET_IPV4, },
-       { .procname = "route", .ctl_name = NET_IPV4_ROUTE, },
+       { .procname = "net", },
+       { .procname = "ipv4", },
+       { .procname = "route", },
        { },
 };
 
index 2dcf04d..3000567 100644 (file)
@@ -63,34 +63,6 @@ static int ipv4_local_port_range(ctl_table *table, int write,
        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,
                                       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;
 }
 
-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,
                                                 int write,
                                                 void __user *buffer, size_t *lenp,
@@ -165,32 +118,8 @@ static int proc_allowed_congestion_control(ctl_table *ctl,
        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[] = {
        {
-               .ctl_name       = NET_IPV4_TCP_TIMESTAMPS,
                .procname       = "tcp_timestamps",
                .data           = &sysctl_tcp_timestamps,
                .maxlen         = sizeof(int),
@@ -198,7 +127,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_TCP_WINDOW_SCALING,
                .procname       = "tcp_window_scaling",
                .data           = &sysctl_tcp_window_scaling,
                .maxlen         = sizeof(int),
@@ -206,7 +134,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_TCP_SACK,
                .procname       = "tcp_sack",
                .data           = &sysctl_tcp_sack,
                .maxlen         = sizeof(int),
@@ -214,7 +141,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_TCP_RETRANS_COLLAPSE,
                .procname       = "tcp_retrans_collapse",
                .data           = &sysctl_tcp_retrans_collapse,
                .maxlen         = sizeof(int),
@@ -222,17 +148,14 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_DEFAULT_TTL,
                .procname       = "ip_default_ttl",
                .data           = &sysctl_ip_default_ttl,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = ipv4_doint_and_flush,
-               .strategy       = ipv4_doint_and_flush_strategy,
                .extra2         = &init_net,
        },
        {
-               .ctl_name       = NET_IPV4_NO_PMTU_DISC,
                .procname       = "ip_no_pmtu_disc",
                .data           = &ipv4_config.no_pmtu_disc,
                .maxlen         = sizeof(int),
@@ -240,7 +163,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_NONLOCAL_BIND,
                .procname       = "ip_nonlocal_bind",
                .data           = &sysctl_ip_nonlocal_bind,
                .maxlen         = sizeof(int),
@@ -248,7 +170,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_TCP_SYN_RETRIES,
                .procname       = "tcp_syn_retries",
                .data           = &sysctl_tcp_syn_retries,
                .maxlen         = sizeof(int),
@@ -256,7 +177,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_SYNACK_RETRIES,
                .procname       = "tcp_synack_retries",
                .data           = &sysctl_tcp_synack_retries,
                .maxlen         = sizeof(int),
@@ -264,7 +184,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_MAX_ORPHANS,
                .procname       = "tcp_max_orphans",
                .data           = &sysctl_tcp_max_orphans,
                .maxlen         = sizeof(int),
@@ -272,7 +191,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_MAX_TW_BUCKETS,
                .procname       = "tcp_max_tw_buckets",
                .data           = &tcp_death_row.sysctl_max_tw_buckets,
                .maxlen         = sizeof(int),
@@ -280,7 +198,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_DYNADDR,
                .procname       = "ip_dynaddr",
                .data           = &sysctl_ip_dynaddr,
                .maxlen         = sizeof(int),
@@ -288,16 +205,13 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_TCP_KEEPALIVE_TIME,
                .procname       = "tcp_keepalive_time",
                .data           = &sysctl_tcp_keepalive_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
        {
-               .ctl_name       = NET_IPV4_TCP_KEEPALIVE_PROBES,
                .procname       = "tcp_keepalive_probes",
                .data           = &sysctl_tcp_keepalive_probes,
                .maxlen         = sizeof(int),
@@ -305,26 +219,21 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_TCP_KEEPALIVE_INTVL,
                .procname       = "tcp_keepalive_intvl",
                .data           = &sysctl_tcp_keepalive_intvl,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
        {
-               .ctl_name       = NET_IPV4_TCP_RETRIES1,
                .procname       = "tcp_retries1",
                .data           = &sysctl_tcp_retries1,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra2         = &tcp_retr1_max
        },
        {
-               .ctl_name       = NET_IPV4_TCP_RETRIES2,
                .procname       = "tcp_retries2",
                .data           = &sysctl_tcp_retries2,
                .maxlen         = sizeof(int),
@@ -332,17 +241,14 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_TCP_FIN_TIMEOUT,
                .procname       = "tcp_fin_timeout",
                .data           = &sysctl_tcp_fin_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
 #ifdef CONFIG_SYN_COOKIES
        {
-               .ctl_name       = NET_TCP_SYNCOOKIES,
                .procname       = "tcp_syncookies",
                .data           = &sysctl_tcp_syncookies,
                .maxlen         = sizeof(int),
@@ -351,7 +257,6 @@ static struct ctl_table ipv4_table[] = {
        },
 #endif
        {
-               .ctl_name       = NET_TCP_TW_RECYCLE,
                .procname       = "tcp_tw_recycle",
                .data           = &tcp_death_row.sysctl_tw_recycle,
                .maxlen         = sizeof(int),
@@ -359,7 +264,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_ABORT_ON_OVERFLOW,
                .procname       = "tcp_abort_on_overflow",
                .data           = &sysctl_tcp_abort_on_overflow,
                .maxlen         = sizeof(int),
@@ -367,7 +271,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_STDURG,
                .procname       = "tcp_stdurg",
                .data           = &sysctl_tcp_stdurg,
                .maxlen         = sizeof(int),
@@ -375,7 +278,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_RFC1337,
                .procname       = "tcp_rfc1337",
                .data           = &sysctl_tcp_rfc1337,
                .maxlen         = sizeof(int),
@@ -383,7 +285,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_MAX_SYN_BACKLOG,
                .procname       = "tcp_max_syn_backlog",
                .data           = &sysctl_max_syn_backlog,
                .maxlen         = sizeof(int),
@@ -391,17 +292,14 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_LOCAL_PORT_RANGE,
                .procname       = "ip_local_port_range",
                .data           = &sysctl_local_ports.range,
                .maxlen         = sizeof(sysctl_local_ports.range),
                .mode           = 0644,
                .proc_handler   = ipv4_local_port_range,
-               .strategy       = ipv4_sysctl_local_port_range,
        },
 #ifdef CONFIG_IP_MULTICAST
        {
-               .ctl_name       = NET_IPV4_IGMP_MAX_MEMBERSHIPS,
                .procname       = "igmp_max_memberships",
                .data           = &sysctl_igmp_max_memberships,
                .maxlen         = sizeof(int),
@@ -411,7 +309,6 @@ static struct ctl_table ipv4_table[] = {
 
 #endif
        {
-               .ctl_name       = NET_IPV4_IGMP_MAX_MSF,
                .procname       = "igmp_max_msf",
                .data           = &sysctl_igmp_max_msf,
                .maxlen         = sizeof(int),
@@ -419,7 +316,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_INET_PEER_THRESHOLD,
                .procname       = "inet_peer_threshold",
                .data           = &inet_peer_threshold,
                .maxlen         = sizeof(int),
@@ -427,43 +323,34 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_INET_PEER_MINTTL,
                .procname       = "inet_peer_minttl",
                .data           = &inet_peer_minttl,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
        {
-               .ctl_name       = NET_IPV4_INET_PEER_MAXTTL,
                .procname       = "inet_peer_maxttl",
                .data           = &inet_peer_maxttl,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
        {
-               .ctl_name       = NET_IPV4_INET_PEER_GC_MINTIME,
                .procname       = "inet_peer_gc_mintime",
                .data           = &inet_peer_gc_mintime,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
        {
-               .ctl_name       = NET_IPV4_INET_PEER_GC_MAXTIME,
                .procname       = "inet_peer_gc_maxtime",
                .data           = &inet_peer_gc_maxtime,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
        {
-               .ctl_name       = NET_TCP_ORPHAN_RETRIES,
                .procname       = "tcp_orphan_retries",
                .data           = &sysctl_tcp_orphan_retries,
                .maxlen         = sizeof(int),
@@ -471,7 +358,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_FACK,
                .procname       = "tcp_fack",
                .data           = &sysctl_tcp_fack,
                .maxlen         = sizeof(int),
@@ -479,7 +365,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_REORDERING,
                .procname       = "tcp_reordering",
                .data           = &sysctl_tcp_reordering,
                .maxlen         = sizeof(int),
@@ -487,7 +372,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_ECN,
                .procname       = "tcp_ecn",
                .data           = &sysctl_tcp_ecn,
                .maxlen         = sizeof(int),
@@ -495,7 +379,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_DSACK,
                .procname       = "tcp_dsack",
                .data           = &sysctl_tcp_dsack,
                .maxlen         = sizeof(int),
@@ -503,7 +386,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_MEM,
                .procname       = "tcp_mem",
                .data           = &sysctl_tcp_mem,
                .maxlen         = sizeof(sysctl_tcp_mem),
@@ -511,7 +393,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_WMEM,
                .procname       = "tcp_wmem",
                .data           = &sysctl_tcp_wmem,
                .maxlen         = sizeof(sysctl_tcp_wmem),
@@ -519,7 +400,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_RMEM,
                .procname       = "tcp_rmem",
                .data           = &sysctl_tcp_rmem,
                .maxlen         = sizeof(sysctl_tcp_rmem),
@@ -527,7 +407,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_APP_WIN,
                .procname       = "tcp_app_win",
                .data           = &sysctl_tcp_app_win,
                .maxlen         = sizeof(int),
@@ -535,7 +414,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_ADV_WIN_SCALE,
                .procname       = "tcp_adv_win_scale",
                .data           = &sysctl_tcp_adv_win_scale,
                .maxlen         = sizeof(int),
@@ -543,7 +421,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_TW_REUSE,
                .procname       = "tcp_tw_reuse",
                .data           = &sysctl_tcp_tw_reuse,
                .maxlen         = sizeof(int),
@@ -551,7 +428,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_FRTO,
                .procname       = "tcp_frto",
                .data           = &sysctl_tcp_frto,
                .maxlen         = sizeof(int),
@@ -559,7 +435,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_FRTO_RESPONSE,
                .procname       = "tcp_frto_response",
                .data           = &sysctl_tcp_frto_response,
                .maxlen         = sizeof(int),
@@ -567,7 +442,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_LOW_LATENCY,
                .procname       = "tcp_low_latency",
                .data           = &sysctl_tcp_low_latency,
                .maxlen         = sizeof(int),
@@ -575,7 +449,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_TCP_NO_METRICS_SAVE,
                .procname       = "tcp_no_metrics_save",
                .data           = &sysctl_tcp_nometrics_save,
                .maxlen         = sizeof(int),
@@ -583,7 +456,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_TCP_MODERATE_RCVBUF,
                .procname       = "tcp_moderate_rcvbuf",
                .data           = &sysctl_tcp_moderate_rcvbuf,
                .maxlen         = sizeof(int),
@@ -591,7 +463,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_TCP_TSO_WIN_DIVISOR,
                .procname       = "tcp_tso_win_divisor",
                .data           = &sysctl_tcp_tso_win_divisor,
                .maxlen         = sizeof(int),
@@ -599,15 +470,12 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_TCP_CONG_CONTROL,
                .procname       = "tcp_congestion_control",
                .mode           = 0644,
                .maxlen         = TCP_CA_NAME_MAX,
                .proc_handler   = proc_tcp_congestion_control,
-               .strategy       = sysctl_tcp_congestion_control,
        },
        {
-               .ctl_name       = NET_TCP_ABC,
                .procname       = "tcp_abc",
                .data           = &sysctl_tcp_abc,
                .maxlen         = sizeof(int),
@@ -615,7 +483,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_TCP_MTU_PROBING,
                .procname       = "tcp_mtu_probing",
                .data           = &sysctl_tcp_mtu_probing,
                .maxlen         = sizeof(int),
@@ -623,7 +490,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_TCP_BASE_MSS,
                .procname       = "tcp_base_mss",
                .data           = &sysctl_tcp_base_mss,
                .maxlen         = sizeof(int),
@@ -631,7 +497,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS,
                .procname       = "tcp_workaround_signed_windows",
                .data           = &sysctl_tcp_workaround_signed_windows,
                .maxlen         = sizeof(int),
@@ -640,7 +505,6 @@ static struct ctl_table ipv4_table[] = {
        },
 #ifdef CONFIG_NET_DMA
        {
-               .ctl_name       = NET_TCP_DMA_COPYBREAK,
                .procname       = "tcp_dma_copybreak",
                .data           = &sysctl_tcp_dma_copybreak,
                .maxlen         = sizeof(int),
@@ -649,7 +513,6 @@ static struct ctl_table ipv4_table[] = {
        },
 #endif
        {
-               .ctl_name       = NET_TCP_SLOW_START_AFTER_IDLE,
                .procname       = "tcp_slow_start_after_idle",
                .data           = &sysctl_tcp_slow_start_after_idle,
                .maxlen         = sizeof(int),
@@ -658,7 +521,6 @@ static struct ctl_table ipv4_table[] = {
        },
 #ifdef CONFIG_NETLABEL
        {
-               .ctl_name       = NET_CIPSOV4_CACHE_ENABLE,
                .procname       = "cipso_cache_enable",
                .data           = &cipso_v4_cache_enabled,
                .maxlen         = sizeof(int),
@@ -666,7 +528,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_CIPSOV4_CACHE_BUCKET_SIZE,
                .procname       = "cipso_cache_bucket_size",
                .data           = &cipso_v4_cache_bucketsize,
                .maxlen         = sizeof(int),
@@ -674,7 +535,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_CIPSOV4_RBM_OPTFMT,
                .procname       = "cipso_rbm_optfmt",
                .data           = &cipso_v4_rbm_optfmt,
                .maxlen         = sizeof(int),
@@ -682,7 +542,6 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_CIPSOV4_RBM_STRICTVALID,
                .procname       = "cipso_rbm_strictvalid",
                .data           = &cipso_v4_rbm_strictvalid,
                .maxlen         = sizeof(int),
@@ -697,15 +556,12 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_tcp_available_congestion_control,
        },
        {
-               .ctl_name       = NET_TCP_ALLOWED_CONG_CONTROL,
                .procname       = "tcp_allowed_congestion_control",
                .maxlen         = TCP_CA_BUF_MAX,
                .mode           = 0644,
                .proc_handler   = proc_allowed_congestion_control,
-               .strategy       = strategy_allowed_congestion_control,
        },
        {
-               .ctl_name       = NET_TCP_MAX_SSTHRESH,
                .procname       = "tcp_max_ssthresh",
                .data           = &sysctl_tcp_max_ssthresh,
                .maxlen         = sizeof(int),
@@ -713,41 +569,34 @@ static struct ctl_table ipv4_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "udp_mem",
                .data           = &sysctl_udp_mem,
                .maxlen         = sizeof(sysctl_udp_mem),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &zero
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "udp_rmem_min",
                .data           = &sysctl_udp_rmem_min,
                .maxlen         = sizeof(sysctl_udp_rmem_min),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &zero
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "udp_wmem_min",
                .data           = &sysctl_udp_wmem_min,
                .maxlen         = sizeof(sysctl_udp_wmem_min),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &zero
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table ipv4_net_table[] = {
        {
-               .ctl_name       = NET_IPV4_ICMP_ECHO_IGNORE_ALL,
                .procname       = "icmp_echo_ignore_all",
                .data           = &init_net.ipv4.sysctl_icmp_echo_ignore_all,
                .maxlen         = sizeof(int),
@@ -755,7 +604,6 @@ static struct ctl_table ipv4_net_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS,
                .procname       = "icmp_echo_ignore_broadcasts",
                .data           = &init_net.ipv4.sysctl_icmp_echo_ignore_broadcasts,
                .maxlen         = sizeof(int),
@@ -763,7 +611,6 @@ static struct ctl_table ipv4_net_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES,
                .procname       = "icmp_ignore_bogus_error_responses",
                .data           = &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses,
                .maxlen         = sizeof(int),
@@ -771,7 +618,6 @@ static struct ctl_table ipv4_net_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR,
                .procname       = "icmp_errors_use_inbound_ifaddr",
                .data           = &init_net.ipv4.sysctl_icmp_errors_use_inbound_ifaddr,
                .maxlen         = sizeof(int),
@@ -779,16 +625,13 @@ static struct ctl_table ipv4_net_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV4_ICMP_RATELIMIT,
                .procname       = "icmp_ratelimit",
                .data           = &init_net.ipv4.sysctl_icmp_ratelimit,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_ms_jiffies,
-               .strategy       = sysctl_ms_jiffies
        },
        {
-               .ctl_name       = NET_IPV4_ICMP_RATEMASK,
                .procname       = "icmp_ratemask",
                .data           = &init_net.ipv4.sysctl_icmp_ratemask,
                .maxlen         = sizeof(int),
@@ -796,7 +639,6 @@ static struct ctl_table ipv4_net_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rt_cache_rebuild_count",
                .data           = &init_net.ipv4.sysctl_rt_cache_rebuild_count,
                .maxlen         = sizeof(int),
@@ -807,8 +649,8 @@ static struct ctl_table ipv4_net_table[] = {
 };
 
 struct ctl_path net_ipv4_ctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "ipv4", .ctl_name = NET_IPV4, },
+       { .procname = "net", },
+       { .procname = "ipv4", },
        { },
 };
 EXPORT_SYMBOL_GPL(net_ipv4_ctl_path);
index 74fb2eb..8c08a28 100644 (file)
@@ -267,7 +267,6 @@ static struct xfrm_policy_afinfo xfrm4_policy_afinfo = {
 #ifdef CONFIG_SYSCTL
 static struct ctl_table xfrm4_policy_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "xfrm4_gc_thresh",
                .data           = &xfrm4_dst_ops.gc_thresh,
                .maxlen         = sizeof(int),
index 1fd0a3d..f918399 100644 (file)
@@ -4000,41 +4000,6 @@ int addrconf_sysctl_forward(ctl_table *ctl, int write,
        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)
 {
        if (!idev || !idev->dev)
@@ -4113,16 +4078,13 @@ static struct addrconf_sysctl_table
        .sysctl_header = NULL,
        .addrconf_vars = {
                {
-                       .ctl_name       =       NET_IPV6_FORWARDING,
                        .procname       =       "forwarding",
                        .data           =       &ipv6_devconf.forwarding,
                        .maxlen         =       sizeof(int),
                        .mode           =       0644,
                        .proc_handler   =       addrconf_sysctl_forward,
-                       .strategy       =       addrconf_sysctl_forward_strategy,
                },
                {
-                       .ctl_name       =       NET_IPV6_HOP_LIMIT,
                        .procname       =       "hop_limit",
                        .data           =       &ipv6_devconf.hop_limit,
                        .maxlen         =       sizeof(int),
@@ -4130,7 +4092,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_MTU,
                        .procname       =       "mtu",
                        .data           =       &ipv6_devconf.mtu6,
                        .maxlen         =       sizeof(int),
@@ -4138,7 +4099,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_ACCEPT_RA,
                        .procname       =       "accept_ra",
                        .data           =       &ipv6_devconf.accept_ra,
                        .maxlen         =       sizeof(int),
@@ -4146,7 +4106,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_ACCEPT_REDIRECTS,
                        .procname       =       "accept_redirects",
                        .data           =       &ipv6_devconf.accept_redirects,
                        .maxlen         =       sizeof(int),
@@ -4154,7 +4113,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_AUTOCONF,
                        .procname       =       "autoconf",
                        .data           =       &ipv6_devconf.autoconf,
                        .maxlen         =       sizeof(int),
@@ -4162,7 +4120,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_DAD_TRANSMITS,
                        .procname       =       "dad_transmits",
                        .data           =       &ipv6_devconf.dad_transmits,
                        .maxlen         =       sizeof(int),
@@ -4170,7 +4127,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_RTR_SOLICITS,
                        .procname       =       "router_solicitations",
                        .data           =       &ipv6_devconf.rtr_solicits,
                        .maxlen         =       sizeof(int),
@@ -4178,25 +4134,20 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_RTR_SOLICIT_INTERVAL,
                        .procname       =       "router_solicitation_interval",
                        .data           =       &ipv6_devconf.rtr_solicit_interval,
                        .maxlen         =       sizeof(int),
                        .mode           =       0644,
                        .proc_handler   =       proc_dointvec_jiffies,
-                       .strategy       =       sysctl_jiffies,
                },
                {
-                       .ctl_name       =       NET_IPV6_RTR_SOLICIT_DELAY,
                        .procname       =       "router_solicitation_delay",
                        .data           =       &ipv6_devconf.rtr_solicit_delay,
                        .maxlen         =       sizeof(int),
                        .mode           =       0644,
                        .proc_handler   =       proc_dointvec_jiffies,
-                       .strategy       =       sysctl_jiffies,
                },
                {
-                       .ctl_name       =       NET_IPV6_FORCE_MLD_VERSION,
                        .procname       =       "force_mld_version",
                        .data           =       &ipv6_devconf.force_mld_version,
                        .maxlen         =       sizeof(int),
@@ -4205,7 +4156,6 @@ static struct addrconf_sysctl_table
                },
 #ifdef CONFIG_IPV6_PRIVACY
                {
-                       .ctl_name       =       NET_IPV6_USE_TEMPADDR,
                        .procname       =       "use_tempaddr",
                        .data           =       &ipv6_devconf.use_tempaddr,
                        .maxlen         =       sizeof(int),
@@ -4213,7 +4163,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_TEMP_VALID_LFT,
                        .procname       =       "temp_valid_lft",
                        .data           =       &ipv6_devconf.temp_valid_lft,
                        .maxlen         =       sizeof(int),
@@ -4221,7 +4170,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_TEMP_PREFERED_LFT,
                        .procname       =       "temp_prefered_lft",
                        .data           =       &ipv6_devconf.temp_prefered_lft,
                        .maxlen         =       sizeof(int),
@@ -4229,7 +4177,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_REGEN_MAX_RETRY,
                        .procname       =       "regen_max_retry",
                        .data           =       &ipv6_devconf.regen_max_retry,
                        .maxlen         =       sizeof(int),
@@ -4237,7 +4184,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_MAX_DESYNC_FACTOR,
                        .procname       =       "max_desync_factor",
                        .data           =       &ipv6_devconf.max_desync_factor,
                        .maxlen         =       sizeof(int),
@@ -4246,7 +4192,6 @@ static struct addrconf_sysctl_table
                },
 #endif
                {
-                       .ctl_name       =       NET_IPV6_MAX_ADDRESSES,
                        .procname       =       "max_addresses",
                        .data           =       &ipv6_devconf.max_addresses,
                        .maxlen         =       sizeof(int),
@@ -4254,7 +4199,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_ACCEPT_RA_DEFRTR,
                        .procname       =       "accept_ra_defrtr",
                        .data           =       &ipv6_devconf.accept_ra_defrtr,
                        .maxlen         =       sizeof(int),
@@ -4262,7 +4206,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_ACCEPT_RA_PINFO,
                        .procname       =       "accept_ra_pinfo",
                        .data           =       &ipv6_devconf.accept_ra_pinfo,
                        .maxlen         =       sizeof(int),
@@ -4271,7 +4214,6 @@ static struct addrconf_sysctl_table
                },
 #ifdef CONFIG_IPV6_ROUTER_PREF
                {
-                       .ctl_name       =       NET_IPV6_ACCEPT_RA_RTR_PREF,
                        .procname       =       "accept_ra_rtr_pref",
                        .data           =       &ipv6_devconf.accept_ra_rtr_pref,
                        .maxlen         =       sizeof(int),
@@ -4279,17 +4221,14 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_RTR_PROBE_INTERVAL,
                        .procname       =       "router_probe_interval",
                        .data           =       &ipv6_devconf.rtr_probe_interval,
                        .maxlen         =       sizeof(int),
                        .mode           =       0644,
                        .proc_handler   =       proc_dointvec_jiffies,
-                       .strategy       =       sysctl_jiffies,
                },
 #ifdef CONFIG_IPV6_ROUTE_INFO
                {
-                       .ctl_name       =       NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN,
                        .procname       =       "accept_ra_rt_info_max_plen",
                        .data           =       &ipv6_devconf.accept_ra_rt_info_max_plen,
                        .maxlen         =       sizeof(int),
@@ -4299,7 +4238,6 @@ static struct addrconf_sysctl_table
 #endif
 #endif
                {
-                       .ctl_name       =       NET_IPV6_PROXY_NDP,
                        .procname       =       "proxy_ndp",
                        .data           =       &ipv6_devconf.proxy_ndp,
                        .maxlen         =       sizeof(int),
@@ -4307,7 +4245,6 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       NET_IPV6_ACCEPT_SOURCE_ROUTE,
                        .procname       =       "accept_source_route",
                        .data           =       &ipv6_devconf.accept_source_route,
                        .maxlen         =       sizeof(int),
@@ -4316,7 +4253,6 @@ static struct addrconf_sysctl_table
                },
 #ifdef CONFIG_IPV6_OPTIMISTIC_DAD
                {
-                       .ctl_name       =       CTL_UNNUMBERED,
                        .procname       =       "optimistic_dad",
                        .data           =       &ipv6_devconf.optimistic_dad,
                        .maxlen         =       sizeof(int),
@@ -4327,7 +4263,6 @@ static struct addrconf_sysctl_table
 #endif
 #ifdef CONFIG_IPV6_MROUTE
                {
-                       .ctl_name       =       CTL_UNNUMBERED,
                        .procname       =       "mc_forwarding",
                        .data           =       &ipv6_devconf.mc_forwarding,
                        .maxlen         =       sizeof(int),
@@ -4336,16 +4271,13 @@ static struct addrconf_sysctl_table
                },
 #endif
                {
-                       .ctl_name       =       CTL_UNNUMBERED,
                        .procname       =       "disable_ipv6",
                        .data           =       &ipv6_devconf.disable_ipv6,
                        .maxlen         =       sizeof(int),
                        .mode           =       0644,
                        .proc_handler   =       addrconf_sysctl_disable,
-                       .strategy       =       sysctl_intvec,
                },
                {
-                       .ctl_name       =       CTL_UNNUMBERED,
                        .procname       =       "accept_dad",
                        .data           =       &ipv6_devconf.accept_dad,
                        .maxlen         =       sizeof(int),
@@ -4353,13 +4285,13 @@ static struct addrconf_sysctl_table
                        .proc_handler   =       proc_dointvec,
                },
                {
-                       .ctl_name       =       0,      /* sentinel */
+                       /* sentinel */
                }
        },
 };
 
 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;
        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
 
        struct ctl_path addrconf_ctl_path[] = {
-               { .procname = "net", .ctl_name = CTL_NET, },
-               { .procname = "ipv6", .ctl_name = NET_IPV6, },
-               { .procname = "conf", .ctl_name = NET_IPV6_CONF, },
+               { .procname = "net", },
+               { .procname = "ipv6", },
+               { .procname = "conf", },
                { /* to be set */ },
                { },
        };
@@ -4395,7 +4327,6 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name,
                goto free;
 
        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->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,
                              NET_IPV6_NEIGH, "ipv6",
-                             &ndisc_ifinfo_sysctl_change,
-                             ndisc_ifinfo_sysctl_strategy);
+                             &ndisc_ifinfo_sysctl_change);
        __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)
@@ -4473,13 +4403,11 @@ static int addrconf_init_net(struct net *net)
        net->ipv6.devconf_dflt = dflt;
 
 #ifdef CONFIG_SYSCTL
-       err = __addrconf_sysctl_register(net, "all", NET_PROTO_CONF_ALL,
-                       NULL, all);
+       err = __addrconf_sysctl_register(net, "all", NULL, all);
        if (err < 0)
                goto err_reg_all;
 
-       err = __addrconf_sysctl_register(net, "default", NET_PROTO_CONF_DEFAULT,
-                       NULL, dflt);
+       err = __addrconf_sysctl_register(net, "default", NULL, dflt);
        if (err < 0)
                goto err_reg_dflt;
 #endif
index f23ebbe..4ae661b 100644 (file)
@@ -942,15 +942,13 @@ EXPORT_SYMBOL(icmpv6_err_convert);
 #ifdef CONFIG_SYSCTL
 ctl_table ipv6_icmp_table_template[] = {
        {
-               .ctl_name       = NET_IPV6_ICMP_RATELIMIT,
                .procname       = "ratelimit",
                .data           = &init_net.ipv6.sysctl.icmpv6_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_ms_jiffies,
-               .strategy       = sysctl_ms_jiffies
        },
-       { .ctl_name = 0 },
+       { },
 };
 
 struct ctl_table *ipv6_icmp_sysctl_init(struct net *net)
index f74e4e2..3d0520e 100644 (file)
@@ -1768,42 +1768,6 @@ int ndisc_ifinfo_sysctl_change(struct ctl_table *ctl, int write, void __user *bu
        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
 
@@ -1857,8 +1821,7 @@ int __init ndisc_init(void)
 #ifdef CONFIG_SYSCTL
        err = neigh_sysctl_register(NULL, &nd_tbl.parms, NET_IPV6,
                                    NET_IPV6_NEIGH, "ipv6",
-                                   &ndisc_ifinfo_sysctl_change,
-                                   &ndisc_ifinfo_sysctl_strategy);
+                                   &ndisc_ifinfo_sysctl_change);
        if (err)
                goto out_unregister_pernet;
 #endif
index 1cf3f0c..14e52aa 100644 (file)
@@ -36,7 +36,6 @@
 
 #define IPQ_QMAX_DEFAULT 1024
 #define IPQ_PROC_FS_NAME "ip6_queue"
-#define NET_IPQ_QMAX 2088
 #define NET_IPQ_QMAX_NAME "ip6_queue_maxlen"
 
 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[] = {
        {
-               .ctl_name       = NET_IPQ_QMAX,
                .procname       = NET_IPQ_QMAX_NAME,
                .data           = &queue_maxlen,
                .maxlen         = sizeof(queue_maxlen),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       { .ctl_name = 0 }
+       { }
 };
 #endif
 
index 642dcb1..2acadc8 100644 (file)
@@ -277,9 +277,7 @@ static struct ctl_table icmpv6_sysctl_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name       = 0
-       }
+       { }
 };
 #endif /* CONFIG_SYSCTL */
 
index f3aba25..e0b9424 100644 (file)
@@ -83,7 +83,6 @@ struct ctl_table nf_ct_ipv6_sysctl_table[] = {
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = NET_NF_CONNTRACK_FRAG6_LOW_THRESH,
                .procname       = "nf_conntrack_frag6_low_thresh",
                .data           = &nf_init_frags.low_thresh,
                .maxlen         = sizeof(unsigned int),
@@ -91,14 +90,13 @@ struct ctl_table nf_ct_ipv6_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_NF_CONNTRACK_FRAG6_HIGH_THRESH,
                .procname       = "nf_conntrack_frag6_high_thresh",
                .data           = &nf_init_frags.high_thresh,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 #endif
 
index da5bd0e..2499e97 100644 (file)
@@ -636,7 +636,6 @@ static const struct inet6_protocol frag_protocol =
 #ifdef CONFIG_SYSCTL
 static struct ctl_table ip6_frags_ns_ctl_table[] = {
        {
-               .ctl_name       = NET_IPV6_IP6FRAG_HIGH_THRESH,
                .procname       = "ip6frag_high_thresh",
                .data           = &init_net.ipv6.frags.high_thresh,
                .maxlen         = sizeof(int),
@@ -644,7 +643,6 @@ static struct ctl_table ip6_frags_ns_ctl_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV6_IP6FRAG_LOW_THRESH,
                .procname       = "ip6frag_low_thresh",
                .data           = &init_net.ipv6.frags.low_thresh,
                .maxlen         = sizeof(int),
@@ -652,26 +650,22 @@ static struct ctl_table ip6_frags_ns_ctl_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IPV6_IP6FRAG_TIME,
                .procname       = "ip6frag_time",
                .data           = &init_net.ipv6.frags.timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        { }
 };
 
 static struct ctl_table ip6_frags_ctl_table[] = {
        {
-               .ctl_name       = NET_IPV6_IP6FRAG_SECRET_INTERVAL,
                .procname       = "ip6frag_secret_interval",
                .data           = &ip6_frags.secret_interval,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
        },
        { }
 };
index d6fe764..6aa202e 100644 (file)
@@ -2546,7 +2546,6 @@ ctl_table ipv6_route_table_template[] = {
                .proc_handler   =       ipv6_sysctl_rtcache_flush
        },
        {
-               .ctl_name       =       NET_IPV6_ROUTE_GC_THRESH,
                .procname       =       "gc_thresh",
                .data           =       &ip6_dst_ops_template.gc_thresh,
                .maxlen         =       sizeof(int),
@@ -2554,7 +2553,6 @@ ctl_table ipv6_route_table_template[] = {
                .proc_handler   =       proc_dointvec,
        },
        {
-               .ctl_name       =       NET_IPV6_ROUTE_MAX_SIZE,
                .procname       =       "max_size",
                .data           =       &init_net.ipv6.sysctl.ip6_rt_max_size,
                .maxlen         =       sizeof(int),
@@ -2562,69 +2560,55 @@ ctl_table ipv6_route_table_template[] = {
                .proc_handler   =       proc_dointvec,
        },
        {
-               .ctl_name       =       NET_IPV6_ROUTE_GC_MIN_INTERVAL,
                .procname       =       "gc_min_interval",
                .data           =       &init_net.ipv6.sysctl.ip6_rt_gc_min_interval,
                .maxlen         =       sizeof(int),
                .mode           =       0644,
                .proc_handler   =       proc_dointvec_jiffies,
-               .strategy       =       sysctl_jiffies,
        },
        {
-               .ctl_name       =       NET_IPV6_ROUTE_GC_TIMEOUT,
                .procname       =       "gc_timeout",
                .data           =       &init_net.ipv6.sysctl.ip6_rt_gc_timeout,
                .maxlen         =       sizeof(int),
                .mode           =       0644,
                .proc_handler   =       proc_dointvec_jiffies,
-               .strategy       =       sysctl_jiffies,
        },
        {
-               .ctl_name       =       NET_IPV6_ROUTE_GC_INTERVAL,
                .procname       =       "gc_interval",
                .data           =       &init_net.ipv6.sysctl.ip6_rt_gc_interval,
                .maxlen         =       sizeof(int),
                .mode           =       0644,
                .proc_handler   =       proc_dointvec_jiffies,
-               .strategy       =       sysctl_jiffies,
        },
        {
-               .ctl_name       =       NET_IPV6_ROUTE_GC_ELASTICITY,
                .procname       =       "gc_elasticity",
                .data           =       &init_net.ipv6.sysctl.ip6_rt_gc_elasticity,
                .maxlen         =       sizeof(int),
                .mode           =       0644,
                .proc_handler   =       proc_dointvec_jiffies,
-               .strategy       =       sysctl_jiffies,
        },
        {
-               .ctl_name       =       NET_IPV6_ROUTE_MTU_EXPIRES,
                .procname       =       "mtu_expires",
                .data           =       &init_net.ipv6.sysctl.ip6_rt_mtu_expires,
                .maxlen         =       sizeof(int),
                .mode           =       0644,
                .proc_handler   =       proc_dointvec_jiffies,
-               .strategy       =       sysctl_jiffies,
        },
        {
-               .ctl_name       =       NET_IPV6_ROUTE_MIN_ADVMSS,
                .procname       =       "min_adv_mss",
                .data           =       &init_net.ipv6.sysctl.ip6_rt_min_advmss,
                .maxlen         =       sizeof(int),
                .mode           =       0644,
                .proc_handler   =       proc_dointvec_jiffies,
-               .strategy       =       sysctl_jiffies,
        },
        {
-               .ctl_name       =       NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS,
                .procname       =       "gc_min_interval_ms",
                .data           =       &init_net.ipv6.sysctl.ip6_rt_gc_min_interval,
                .maxlen         =       sizeof(int),
                .mode           =       0644,
                .proc_handler   =       proc_dointvec_ms_jiffies,
-               .strategy       =       sysctl_ms_jiffies,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 struct ctl_table *ipv6_route_sysctl_init(struct net *net)
index 0dc6a4e..c690736 100644 (file)
 
 static ctl_table ipv6_table_template[] = {
        {
-               .ctl_name       = NET_IPV6_ROUTE,
                .procname       = "route",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = ipv6_route_table_template
        },
        {
-               .ctl_name       = NET_IPV6_ICMP,
                .procname       = "icmp",
                .maxlen         = 0,
                .mode           = 0555,
                .child          = ipv6_icmp_table_template
        },
        {
-               .ctl_name       = NET_IPV6_BINDV6ONLY,
                .procname       = "bindv6only",
                .data           = &init_net.ipv6.sysctl.bindv6only,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table ipv6_rotable[] = {
        {
-               .ctl_name       = NET_IPV6_MLD_MAX_MSF,
                .procname       = "mld_max_msf",
                .data           = &sysctl_mld_max_msf,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 struct ctl_path net_ipv6_ctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "ipv6", .ctl_name = NET_IPV6, },
+       { .procname = "net", },
+       { .procname = "ipv6", },
        { },
 };
 EXPORT_SYMBOL_GPL(net_ipv6_ctl_path);
index 8ec3d45..7254e3f 100644 (file)
@@ -309,7 +309,6 @@ static void xfrm6_policy_fini(void)
 #ifdef CONFIG_SYSCTL
 static struct ctl_table xfrm6_policy_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "xfrm6_gc_thresh",
                .data           = &xfrm6_dst_ops.gc_thresh,
                .maxlen         = sizeof(int),
index 633fcab..bd6dca0 100644 (file)
@@ -18,19 +18,18 @@ extern int sysctl_ipx_pprop_broadcasting;
 
 static struct ctl_table ipx_table[] = {
        {
-               .ctl_name       = NET_IPX_PPROP_BROADCASTING,
                .procname       = "ipx_pprop_broadcasting",
                .data           = &sysctl_ipx_pprop_broadcasting,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
-       { },
+       { },
 };
 
 static struct ctl_path ipx_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "ipx", .ctl_name = NET_IPX, },
+       { .procname = "net", },
+       { .procname = "ipx", },
        { }
 };
 
index 5c86567..d0b70da 100644 (file)
@@ -113,26 +113,21 @@ static int do_discovery(ctl_table *table, int write,
 /* One file */
 static ctl_table irda_table[] = {
        {
-               .ctl_name       = NET_IRDA_DISCOVERY,
                .procname       = "discovery",
                .data           = &sysctl_discovery,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = do_discovery,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = NET_IRDA_DEVNAME,
                .procname       = "devname",
                .data           = sysctl_devname,
                .maxlen         = 65,
                .mode           = 0644,
                .proc_handler   = do_devname,
-               .strategy       = sysctl_string
        },
 #ifdef CONFIG_IRDA_DEBUG
        {
-               .ctl_name       = NET_IRDA_DEBUG,
                .procname       = "debug",
                .data           = &irda_debug,
                .maxlen         = sizeof(int),
@@ -142,7 +137,6 @@ static ctl_table irda_table[] = {
 #endif
 #ifdef CONFIG_IRDA_FAST_RR
        {
-               .ctl_name       = NET_IRDA_FAST_POLL,
                .procname       = "fast_poll_increase",
                .data           = &sysctl_fast_poll_increase,
                .maxlen         = sizeof(int),
@@ -151,18 +145,15 @@ static ctl_table irda_table[] = {
        },
 #endif
        {
-               .ctl_name       = NET_IRDA_DISCOVERY_SLOTS,
                .procname       = "discovery_slots",
                .data           = &sysctl_discovery_slots,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_discovery_slots,
                .extra2         = &max_discovery_slots
        },
        {
-               .ctl_name       = NET_IRDA_DISCOVERY_TIMEOUT,
                .procname       = "discovery_timeout",
                .data           = &sysctl_discovery_timeout,
                .maxlen         = sizeof(int),
@@ -170,99 +161,83 @@ static ctl_table irda_table[] = {
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_IRDA_SLOT_TIMEOUT,
                .procname       = "slot_timeout",
                .data           = &sysctl_slot_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_slot_timeout,
                .extra2         = &max_slot_timeout
        },
        {
-               .ctl_name       = NET_IRDA_MAX_BAUD_RATE,
                .procname       = "max_baud_rate",
                .data           = &sysctl_max_baud_rate,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_max_baud_rate,
                .extra2         = &max_max_baud_rate
        },
        {
-               .ctl_name       = NET_IRDA_MIN_TX_TURN_TIME,
                .procname       = "min_tx_turn_time",
                .data           = &sysctl_min_tx_turn_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_min_tx_turn_time,
                .extra2         = &max_min_tx_turn_time
        },
        {
-               .ctl_name       = NET_IRDA_MAX_TX_DATA_SIZE,
                .procname       = "max_tx_data_size",
                .data           = &sysctl_max_tx_data_size,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_max_tx_data_size,
                .extra2         = &max_max_tx_data_size
        },
        {
-               .ctl_name       = NET_IRDA_MAX_TX_WINDOW,
                .procname       = "max_tx_window",
                .data           = &sysctl_max_tx_window,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_max_tx_window,
                .extra2         = &max_max_tx_window
        },
        {
-               .ctl_name       = NET_IRDA_MAX_NOREPLY_TIME,
                .procname       = "max_noreply_time",
                .data           = &sysctl_max_noreply_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_max_noreply_time,
                .extra2         = &max_max_noreply_time
        },
        {
-               .ctl_name       = NET_IRDA_WARN_NOREPLY_TIME,
                .procname       = "warn_noreply_time",
                .data           = &sysctl_warn_noreply_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_warn_noreply_time,
                .extra2         = &max_warn_noreply_time
        },
        {
-               .ctl_name       = NET_IRDA_LAP_KEEPALIVE_TIME,
                .procname       = "lap_keepalive_time",
                .data           = &sysctl_lap_keepalive_time,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_lap_keepalive_time,
                .extra2         = &max_lap_keepalive_time
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_path irda_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "irda", .ctl_name = NET_IRDA, },
+       { .procname = "net", },
+       { .procname = "irda", },
        { }
 };
 
index 57b9304..e2ebe35 100644 (file)
 
 static struct ctl_table llc2_timeout_table[] = {
        {
-               .ctl_name       = NET_LLC2_ACK_TIMEOUT,
                .procname       = "ack",
                .data           = &sysctl_llc2_ack_timeout,
                .maxlen         = sizeof(long),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_LLC2_BUSY_TIMEOUT,
                .procname       = "busy",
                .data           = &sysctl_llc2_busy_timeout,
                .maxlen         = sizeof(long),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_LLC2_P_TIMEOUT,
                .procname       = "p",
                .data           = &sysctl_llc2_p_timeout,
                .maxlen         = sizeof(long),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
        {
-               .ctl_name       = NET_LLC2_REJ_TIMEOUT,
                .procname       = "rej",
                .data           = &sysctl_llc2_rej_timeout,
                .maxlen         = sizeof(long),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
-       { },
+       { },
 };
 
 static struct ctl_table llc_station_table[] = {
        {
-               .ctl_name       = NET_LLC_STATION_ACK_TIMEOUT,
                .procname       = "ack_timeout",
                .data           = &sysctl_llc_station_ack_timeout,
                .maxlen         = sizeof(long),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies,
        },
-       { },
+       { },
 };
 
 static struct ctl_table llc2_dir_timeout_table[] = {
        {
-               .ctl_name       = NET_LLC2,
                .procname       = "timeout",
                .mode           = 0555,
                .child          = llc2_timeout_table,
        },
-       { },
+       { },
 };
 
 static struct ctl_table llc_table[] = {
        {
-               .ctl_name       = NET_LLC2,
                .procname       = "llc2",
                .mode           = 0555,
                .child          = llc2_dir_timeout_table,
        },
        {
-               .ctl_name       = NET_LLC_STATION,
                .procname       = "station",
                .mode           = 0555,
                .child          = llc_station_table,
        },
-       { },
+       { },
 };
 
 static struct ctl_path llc_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "llc", .ctl_name = NET_LLC, },
+       { .procname = "net", },
+       { .procname = "llc", },
        { }
 };
 
index 5bb3473..60ec4e4 100644 (file)
@@ -273,8 +273,8 @@ void __init netfilter_init(void)
 
 #ifdef CONFIG_SYSCTL
 struct ctl_path nf_net_netfilter_sysctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "netfilter", .ctl_name = NET_NETFILTER, },
+       { .procname = "net", },
+       { .procname = "netfilter", },
        { }
 };
 EXPORT_SYMBOL_GPL(nf_net_netfilter_sysctl_path);
index 446e9bd..e55a686 100644 (file)
@@ -1706,12 +1706,12 @@ static struct ctl_table vs_vars[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 const struct ctl_path net_vs_ctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "ipv4", .ctl_name = NET_IPV4, },
+       { .procname = "net", },
+       { .procname = "ipv4", },
        { .procname = "vs", },
        { }
 };
index c1757f3..1b9370d 100644 (file)
@@ -121,7 +121,7 @@ static ctl_table vs_vars_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table_header * sysctl_header;
index 715b57f..f7476b9 100644 (file)
@@ -302,7 +302,7 @@ static ctl_table vs_vars_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_table_header * sysctl_header;
index 4a1d94a..018f90d 100644 (file)
@@ -30,7 +30,6 @@ MODULE_PARM_DESC(acct, "Enable connection tracking flow accounting.");
 #ifdef CONFIG_SYSCTL
 static struct ctl_table acct_sysctl_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_acct",
                .data           = &init_net.ct.sysctl_acct,
                .maxlen         = sizeof(unsigned int),
index aee560b..d5a9bcd 100644 (file)
@@ -151,7 +151,6 @@ static int nf_ct_events_retry_timeout __read_mostly = 15*HZ;
 #ifdef CONFIG_SYSCTL
 static struct ctl_table event_sysctl_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_events",
                .data           = &init_net.ct.sysctl_events,
                .maxlen         = sizeof(unsigned int),
@@ -159,7 +158,6 @@ static struct ctl_table event_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_events_retry_timeout",
                .data           = &init_net.ct.sysctl_events_retry_timeout,
                .maxlen         = sizeof(unsigned int),
index 1b816a2..7bf1395 100644 (file)
@@ -703,64 +703,54 @@ static int dccp_nlattr_size(void)
 /* template, data assigned later */
 static struct ctl_table dccp_sysctl_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_dccp_timeout_request",
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_dccp_timeout_respond",
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_dccp_timeout_partopen",
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_dccp_timeout_open",
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_dccp_timeout_closereq",
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_dccp_timeout_closing",
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_dccp_timeout_timewait",
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_dccp_loose",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
-       {
-               .ctl_name       = 0,
-       }
+       { }
 };
 #endif /* CONFIG_SYSCTL */
 
index 829374f..e2091d0 100644 (file)
@@ -69,9 +69,7 @@ static struct ctl_table generic_sysctl_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name       = 0
-       }
+       { }
 };
 #ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
 static struct ctl_table generic_compat_sysctl_table[] = {
@@ -82,9 +80,7 @@ static struct ctl_table generic_compat_sysctl_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name       = 0
-       }
+       { }
 };
 #endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
 #endif /* CONFIG_SYSCTL */
index c10e6f3..f9d930f 100644 (file)
@@ -595,9 +595,7 @@ static struct ctl_table sctp_sysctl_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name = 0
-       }
+       { }
 };
 
 #ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
@@ -651,9 +649,7 @@ static struct ctl_table sctp_compat_sysctl_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name = 0
-       }
+       { }
 };
 #endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
 #endif
index ba2b769..7eda8b8 100644 (file)
@@ -1291,7 +1291,6 @@ static struct ctl_table tcp_sysctl_table[] = {
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = NET_NF_CONNTRACK_TCP_LOOSE,
                .procname       = "nf_conntrack_tcp_loose",
                .data           = &nf_ct_tcp_loose,
                .maxlen         = sizeof(unsigned int),
@@ -1299,7 +1298,6 @@ static struct ctl_table tcp_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_NF_CONNTRACK_TCP_BE_LIBERAL,
                .procname       = "nf_conntrack_tcp_be_liberal",
                .data           = &nf_ct_tcp_be_liberal,
                .maxlen         = sizeof(unsigned int),
@@ -1307,16 +1305,13 @@ static struct ctl_table tcp_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_NF_CONNTRACK_TCP_MAX_RETRANS,
                .procname       = "nf_conntrack_tcp_max_retrans",
                .data           = &nf_ct_tcp_max_retrans,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
-       {
-               .ctl_name       = 0
-       }
+       { }
 };
 
 #ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
@@ -1392,7 +1387,6 @@ static struct ctl_table tcp_compat_sysctl_table[] = {
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = NET_IPV4_NF_CONNTRACK_TCP_LOOSE,
                .procname       = "ip_conntrack_tcp_loose",
                .data           = &nf_ct_tcp_loose,
                .maxlen         = sizeof(unsigned int),
@@ -1400,7 +1394,6 @@ static struct ctl_table tcp_compat_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL,
                .procname       = "ip_conntrack_tcp_be_liberal",
                .data           = &nf_ct_tcp_be_liberal,
                .maxlen         = sizeof(unsigned int),
@@ -1408,16 +1401,13 @@ static struct ctl_table tcp_compat_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS,
                .procname       = "ip_conntrack_tcp_max_retrans",
                .data           = &nf_ct_tcp_max_retrans,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
-       {
-               .ctl_name       = 0
-       }
+       { }
 };
 #endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
 #endif /* CONFIG_SYSCTL */
index 70809d1..5c5518b 100644 (file)
@@ -154,9 +154,7 @@ static struct ctl_table udp_sysctl_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name       = 0
-       }
+       { }
 };
 #ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
 static struct ctl_table udp_compat_sysctl_table[] = {
@@ -174,9 +172,7 @@ static struct ctl_table udp_compat_sysctl_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name       = 0
-       }
+       { }
 };
 #endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
 #endif /* CONFIG_SYSCTL */
index 0badedc..458655b 100644 (file)
@@ -146,7 +146,6 @@ static unsigned int udplite_sysctl_table_users;
 static struct ctl_table_header *udplite_sysctl_header;
 static struct ctl_table udplite_sysctl_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_udplite_timeout",
                .data           = &nf_ct_udplite_timeout,
                .maxlen         = sizeof(unsigned int),
@@ -154,16 +153,13 @@ static struct ctl_table udplite_sysctl_table[] = {
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_udplite_timeout_stream",
                .data           = &nf_ct_udplite_timeout_stream,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       {
-               .ctl_name       = 0
-       }
+       { }
 };
 #endif /* CONFIG_SYSCTL */
 
index 1935153..028aba6 100644 (file)
@@ -340,7 +340,6 @@ static struct ctl_table_header *nf_ct_netfilter_header;
 
 static ctl_table nf_ct_sysctl_table[] = {
        {
-               .ctl_name       = NET_NF_CONNTRACK_MAX,
                .procname       = "nf_conntrack_max",
                .data           = &nf_conntrack_max,
                .maxlen         = sizeof(int),
@@ -348,7 +347,6 @@ static ctl_table nf_ct_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_NF_CONNTRACK_COUNT,
                .procname       = "nf_conntrack_count",
                .data           = &init_net.ct.count,
                .maxlen         = sizeof(int),
@@ -356,7 +354,6 @@ static ctl_table nf_ct_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_NF_CONNTRACK_BUCKETS,
                .procname       = "nf_conntrack_buckets",
                .data           = &nf_conntrack_htable_size,
                .maxlen         = sizeof(unsigned int),
@@ -364,7 +361,6 @@ static ctl_table nf_ct_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_NF_CONNTRACK_CHECKSUM,
                .procname       = "nf_conntrack_checksum",
                .data           = &init_net.ct.sysctl_checksum,
                .maxlen         = sizeof(unsigned int),
@@ -372,43 +368,39 @@ static ctl_table nf_ct_sysctl_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = NET_NF_CONNTRACK_LOG_INVALID,
                .procname       = "nf_conntrack_log_invalid",
                .data           = &init_net.ct.sysctl_log_invalid,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &log_invalid_proto_min,
                .extra2         = &log_invalid_proto_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "nf_conntrack_expect_max",
                .data           = &nf_ct_expect_max,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 #define NET_NF_CONNTRACK_MAX 2089
 
 static ctl_table nf_ct_netfilter_table[] = {
        {
-               .ctl_name       = NET_NF_CONNTRACK_MAX,
                .procname       = "nf_conntrack_max",
                .data           = &nf_conntrack_max,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_path nf_ct_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
+       { .procname = "net", },
        { }
 };
 
index d65d348..015725a 100644 (file)
@@ -208,9 +208,9 @@ static const struct file_operations nflog_file_ops = {
 
 #ifdef CONFIG_SYSCTL
 static struct ctl_path nf_log_sysctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "netfilter", .ctl_name = NET_NETFILTER, },
-       { .procname = "nf_log", .ctl_name = CTL_UNNUMBERED, },
+       { .procname = "net", },
+       { .procname = "netfilter", },
+       { .procname = "nf_log", },
        { }
 };
 
@@ -265,7 +265,6 @@ static __init int netfilter_log_sysctl_init(void)
 
        for (i = NFPROTO_UNSPEC; i < NFPROTO_NUMPROTO; i++) {
                snprintf(nf_log_sysctl_fnames[i-NFPROTO_UNSPEC], 3, "%d", i);
-               nf_log_sysctl_table[i].ctl_name = CTL_UNNUMBERED;
                nf_log_sysctl_table[i].procname =
                        nf_log_sysctl_fnames[i-NFPROTO_UNSPEC];
                nf_log_sysctl_table[i].data = NULL;
index 7b49591..1e0fa9e 100644 (file)
@@ -36,143 +36,119 @@ static struct ctl_table_header *nr_table_header;
 
 static ctl_table nr_table[] = {
        {
-               .ctl_name       = NET_NETROM_DEFAULT_PATH_QUALITY,
                .procname       = "default_path_quality",
                .data           = &sysctl_netrom_default_path_quality,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_quality,
                .extra2         = &max_quality
        },
        {
-               .ctl_name       = NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER,
                .procname       = "obsolescence_count_initialiser",
                .data           = &sysctl_netrom_obsolescence_count_initialiser,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_obs,
                .extra2         = &max_obs
        },
        {
-               .ctl_name       = NET_NETROM_NETWORK_TTL_INITIALISER,
                .procname       = "network_ttl_initialiser",
                .data           = &sysctl_netrom_network_ttl_initialiser,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_ttl,
                .extra2         = &max_ttl
        },
        {
-               .ctl_name       = NET_NETROM_TRANSPORT_TIMEOUT,
                .procname       = "transport_timeout",
                .data           = &sysctl_netrom_transport_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_t1,
                .extra2         = &max_t1
        },
        {
-               .ctl_name       = NET_NETROM_TRANSPORT_MAXIMUM_TRIES,
                .procname       = "transport_maximum_tries",
                .data           = &sysctl_netrom_transport_maximum_tries,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_n2,
                .extra2         = &max_n2
        },
        {
-               .ctl_name       = NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY,
                .procname       = "transport_acknowledge_delay",
                .data           = &sysctl_netrom_transport_acknowledge_delay,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_t2,
                .extra2         = &max_t2
        },
        {
-               .ctl_name       = NET_NETROM_TRANSPORT_BUSY_DELAY,
                .procname       = "transport_busy_delay",
                .data           = &sysctl_netrom_transport_busy_delay,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_t4,
                .extra2         = &max_t4
        },
        {
-               .ctl_name       = NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE,
                .procname       = "transport_requested_window_size",
                .data           = &sysctl_netrom_transport_requested_window_size,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_window,
                .extra2         = &max_window
        },
        {
-               .ctl_name       = NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT,
                .procname       = "transport_no_activity_timeout",
                .data           = &sysctl_netrom_transport_no_activity_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_idle,
                .extra2         = &max_idle
        },
        {
-               .ctl_name       = NET_NETROM_ROUTING_CONTROL,
                .procname       = "routing_control",
                .data           = &sysctl_netrom_routing_control,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_route,
                .extra2         = &max_route
        },
        {
-               .ctl_name       = NET_NETROM_LINK_FAILS_COUNT,
                .procname       = "link_fails_count",
                .data           = &sysctl_netrom_link_fails_count,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_fails,
                .extra2         = &max_fails
        },
        {
-               .ctl_name       = NET_NETROM_RESET,
                .procname       = "reset",
                .data           = &sysctl_netrom_reset_circuit,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_reset,
                .extra2         = &max_reset
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_path nr_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "netrom", .ctl_name = NET_NETROM, },
+       { .procname = "net", },
+       { .procname = "netrom", },
        { }
 };
 
index 2220f33..cea1c7d 100644 (file)
@@ -84,20 +84,18 @@ static int proc_local_port_range(ctl_table *table, int write,
 
 static struct ctl_table phonet_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "local_port_range",
                .data           = &local_port_range,
                .maxlen         = sizeof(local_port_range),
                .mode           = 0644,
                .proc_handler   = proc_local_port_range,
-               .strategy       = NULL,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_path phonet_ctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "phonet", .ctl_name = CTL_UNNUMBERED, },
+       { .procname = "net", },
+       { .procname = "phonet", },
        { },
 };
 
index 84b5ffc..03f01cb 100644 (file)
@@ -67,68 +67,62 @@ unsigned int rds_ib_sysctl_flow_control = 0;
 
 ctl_table rds_ib_sysctl_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_send_wr",
                .data           = &rds_ib_sysctl_max_send_wr,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = &rds_ib_sysctl_max_wr_min,
                .extra2         = &rds_ib_sysctl_max_wr_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_recv_wr",
                .data           = &rds_ib_sysctl_max_recv_wr,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = &rds_ib_sysctl_max_wr_min,
                .extra2         = &rds_ib_sysctl_max_wr_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_unsignaled_wr",
                .data           = &rds_ib_sysctl_max_unsig_wrs,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = &rds_ib_sysctl_max_unsig_wr_min,
                .extra2         = &rds_ib_sysctl_max_unsig_wr_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_unsignaled_bytes",
                .data           = &rds_ib_sysctl_max_unsig_bytes,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = &rds_ib_sysctl_max_unsig_bytes_min,
                .extra2         = &rds_ib_sysctl_max_unsig_bytes_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_recv_allocation",
                .data           = &rds_ib_sysctl_max_recv_allocation,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "flow_control",
                .data           = &rds_ib_sysctl_flow_control,
                .maxlen         = sizeof(rds_ib_sysctl_flow_control),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0}
+       { }
 };
 
 static struct ctl_path rds_ib_sysctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "rds", .ctl_name = CTL_UNNUMBERED, },
-       { .procname = "ib", .ctl_name = CTL_UNNUMBERED, },
+       { .procname = "net", },
+       { .procname = "rds", },
+       { .procname = "ib", },
        { }
 };
 
index 9590678..1c4428a 100644 (file)
@@ -57,68 +57,62 @@ unsigned int rds_iw_sysctl_flow_control = 1;
 
 ctl_table rds_iw_sysctl_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_send_wr",
                .data           = &rds_iw_sysctl_max_send_wr,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = &rds_iw_sysctl_max_wr_min,
                .extra2         = &rds_iw_sysctl_max_wr_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_recv_wr",
                .data           = &rds_iw_sysctl_max_recv_wr,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = &rds_iw_sysctl_max_wr_min,
                .extra2         = &rds_iw_sysctl_max_wr_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_unsignaled_wr",
                .data           = &rds_iw_sysctl_max_unsig_wrs,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = &rds_iw_sysctl_max_unsig_wr_min,
                .extra2         = &rds_iw_sysctl_max_unsig_wr_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_unsignaled_bytes",
                .data           = &rds_iw_sysctl_max_unsig_bytes,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
                .extra1         = &rds_iw_sysctl_max_unsig_bytes_min,
                .extra2         = &rds_iw_sysctl_max_unsig_bytes_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_recv_allocation",
                .data           = &rds_iw_sysctl_max_recv_allocation,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_minmax,
+               .proc_handler   = proc_doulongvec_minmax,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "flow_control",
                .data           = &rds_iw_sysctl_flow_control,
                .maxlen         = sizeof(rds_iw_sysctl_flow_control),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0}
+       { }
 };
 
 static struct ctl_path rds_iw_sysctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "rds", .ctl_name = CTL_UNNUMBERED, },
-       { .procname = "iw", .ctl_name = CTL_UNNUMBERED, },
+       { .procname = "net", },
+       { .procname = "rds", },
+       { .procname = "iw", },
        { }
 };
 
index 307dc5c..7829a20 100644 (file)
@@ -51,55 +51,50 @@ unsigned int rds_sysctl_ping_enable = 1;
 
 static ctl_table rds_sysctl_rds_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "reconnect_min_delay_ms",
                .data           = &rds_sysctl_reconnect_min_jiffies,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_ms_jiffies_minmax,
+               .proc_handler   = proc_doulongvec_ms_jiffies_minmax,
                .extra1         = &rds_sysctl_reconnect_min,
                .extra2         = &rds_sysctl_reconnect_max_jiffies,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "reconnect_max_delay_ms",
                .data           = &rds_sysctl_reconnect_max_jiffies,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_doulongvec_ms_jiffies_minmax,
+               .proc_handler   = proc_doulongvec_ms_jiffies_minmax,
                .extra1         = &rds_sysctl_reconnect_min_jiffies,
                .extra2         = &rds_sysctl_reconnect_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_unacked_packets",
                .data           = &rds_sysctl_max_unacked_packets,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "max_unacked_bytes",
                .data           = &rds_sysctl_max_unacked_bytes,
                .maxlen         = sizeof(unsigned long),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "ping_enable",
                .data           = &rds_sysctl_ping_enable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
+               .proc_handler   = proc_dointvec,
        },
-       { .ctl_name = 0}
+       { }
 };
 
 static struct ctl_path rds_sysctl_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "rds", .ctl_name = CTL_UNNUMBERED, },
+       { .procname = "net", },
+       { .procname = "rds", },
        { }
 };
 
index 3bfe504..df6d9da 100644 (file)
@@ -26,121 +26,101 @@ static struct ctl_table_header *rose_table_header;
 
 static ctl_table rose_table[] = {
        {
-               .ctl_name       = NET_ROSE_RESTART_REQUEST_TIMEOUT,
                .procname       = "restart_request_timeout",
                .data           = &sysctl_rose_restart_request_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_timer,
                .extra2         = &max_timer
        },
        {
-               .ctl_name       = NET_ROSE_CALL_REQUEST_TIMEOUT,
                .procname       = "call_request_timeout",
                .data           = &sysctl_rose_call_request_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_timer,
                .extra2         = &max_timer
        },
        {
-               .ctl_name       = NET_ROSE_RESET_REQUEST_TIMEOUT,
                .procname       = "reset_request_timeout",
                .data           = &sysctl_rose_reset_request_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_timer,
                .extra2         = &max_timer
        },
        {
-               .ctl_name       = NET_ROSE_CLEAR_REQUEST_TIMEOUT,
                .procname       = "clear_request_timeout",
                .data           = &sysctl_rose_clear_request_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_timer,
                .extra2         = &max_timer
        },
        {
-               .ctl_name       = NET_ROSE_NO_ACTIVITY_TIMEOUT,
                .procname       = "no_activity_timeout",
                .data           = &sysctl_rose_no_activity_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_idle,
                .extra2         = &max_idle
        },
        {
-               .ctl_name       = NET_ROSE_ACK_HOLD_BACK_TIMEOUT,
                .procname       = "acknowledge_hold_back_timeout",
                .data           = &sysctl_rose_ack_hold_back_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_timer,
                .extra2         = &max_timer
        },
        {
-               .ctl_name       = NET_ROSE_ROUTING_CONTROL,
                .procname       = "routing_control",
                .data           = &sysctl_rose_routing_control,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_route,
                .extra2         = &max_route
        },
        {
-               .ctl_name       = NET_ROSE_LINK_FAIL_TIMEOUT,
                .procname       = "link_fail_timeout",
                .data           = &sysctl_rose_link_fail_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_ftimer,
                .extra2         = &max_ftimer
        },
        {
-               .ctl_name       = NET_ROSE_MAX_VCS,
                .procname       = "maximum_virtual_circuits",
                .data           = &sysctl_rose_maximum_vcs,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_maxvcs,
                .extra2         = &max_maxvcs
        },
        {
-               .ctl_name       = NET_ROSE_WINDOW_SIZE,
                .procname       = "window_size",
                .data           = &sysctl_rose_window_size,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &min_window,
                .extra2         = &max_window
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_path rose_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "rose", .ctl_name = NET_ROSE, },
+       { .procname = "net", },
+       { .procname = "rose", },
        { }
 };
 
index ab7151d..d50a042 100644 (file)
@@ -59,180 +59,145 @@ extern int sysctl_sctp_wmem[3];
 
 static ctl_table sctp_table[] = {
        {
-               .ctl_name       = NET_SCTP_RTO_INITIAL,
                .procname       = "rto_initial",
                .data           = &sctp_rto_initial,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &one,
                .extra2         = &timer_max
        },
        {
-               .ctl_name       = NET_SCTP_RTO_MIN,
                .procname       = "rto_min",
                .data           = &sctp_rto_min,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &one,
                .extra2         = &timer_max
        },
        {
-               .ctl_name       = NET_SCTP_RTO_MAX,
                .procname       = "rto_max",
                .data           = &sctp_rto_max,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &one,
                .extra2         = &timer_max
        },
        {
-               .ctl_name       = NET_SCTP_VALID_COOKIE_LIFE,
                .procname       = "valid_cookie_life",
                .data           = &sctp_valid_cookie_life,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &one,
                .extra2         = &timer_max
        },
        {
-               .ctl_name       = NET_SCTP_MAX_BURST,
                .procname       = "max_burst",
                .data           = &sctp_max_burst,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &zero,
                .extra2         = &int_max
        },
        {
-               .ctl_name       = NET_SCTP_ASSOCIATION_MAX_RETRANS,
                .procname       = "association_max_retrans",
                .data           = &sctp_max_retrans_association,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &one,
                .extra2         = &int_max
        },
        {
-               .ctl_name       = NET_SCTP_SNDBUF_POLICY,
                .procname       = "sndbuf_policy",
                .data           = &sctp_sndbuf_policy,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = NET_SCTP_RCVBUF_POLICY,
                .procname       = "rcvbuf_policy",
                .data           = &sctp_rcvbuf_policy,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = NET_SCTP_PATH_MAX_RETRANS,
                .procname       = "path_max_retrans",
                .data           = &sctp_max_retrans_path,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &one,
                .extra2         = &int_max
        },
        {
-               .ctl_name       = NET_SCTP_MAX_INIT_RETRANSMITS,
                .procname       = "max_init_retransmits",
                .data           = &sctp_max_retrans_init,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &one,
                .extra2         = &int_max
        },
        {
-               .ctl_name       = NET_SCTP_HB_INTERVAL,
                .procname       = "hb_interval",
                .data           = &sctp_hb_interval,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &one,
                .extra2         = &timer_max
        },
        {
-               .ctl_name       = NET_SCTP_PRESERVE_ENABLE,
                .procname       = "cookie_preserve_enable",
                .data           = &sctp_cookie_preserve_enable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = NET_SCTP_RTO_ALPHA,
                .procname       = "rto_alpha_exp_divisor",
                .data           = &sctp_rto_alpha,
                .maxlen         = sizeof(int),
                .mode           = 0444,
                .proc_handler   = proc_dointvec,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = NET_SCTP_RTO_BETA,
                .procname       = "rto_beta_exp_divisor",
                .data           = &sctp_rto_beta,
                .maxlen         = sizeof(int),
                .mode           = 0444,
                .proc_handler   = proc_dointvec,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = NET_SCTP_ADDIP_ENABLE,
                .procname       = "addip_enable",
                .data           = &sctp_addip_enable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = NET_SCTP_PRSCTP_ENABLE,
                .procname       = "prsctp_enable",
                .data           = &sctp_prsctp_enable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = NET_SCTP_SACK_TIMEOUT,
                .procname       = "sack_timeout",
                .data           = &sctp_sack_timeout,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_minmax,
-               .strategy       = sysctl_intvec,
                .extra1         = &sack_timer_min,
                .extra2         = &sack_timer_max,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sctp_mem",
                .data           = &sysctl_sctp_mem,
                .maxlen         = sizeof(sysctl_sctp_mem),
@@ -240,7 +205,6 @@ static ctl_table sctp_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sctp_rmem",
                .data           = &sysctl_sctp_rmem,
                .maxlen         = sizeof(sysctl_sctp_rmem),
@@ -248,7 +212,6 @@ static ctl_table sctp_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "sctp_wmem",
                .data           = &sysctl_sctp_wmem,
                .maxlen         = sizeof(sysctl_sctp_wmem),
@@ -256,40 +219,34 @@ static ctl_table sctp_table[] = {
                .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "auth_enable",
                .data           = &sctp_auth_enable,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "addip_noauth_enable",
                .data           = &sctp_addip_noauth,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
-               .strategy       = sysctl_intvec
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "addr_scope_policy",
                .data           = &sctp_scope_policy,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &addr_scope_max,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_path sctp_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "sctp", .ctl_name = NET_SCTP, },
+       { .procname = "net", },
+       { .procname = "sctp", },
        { }
 };
 
index 42f9748..e65dcc6 100644 (file)
@@ -139,46 +139,45 @@ static ctl_table debug_table[] = {
                .data           = &rpc_debug,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dodebug
+               .proc_handler   = proc_dodebug
        },
        {
                .procname       = "nfs_debug",
                .data           = &nfs_debug,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dodebug
+               .proc_handler   = proc_dodebug
        },
        {
                .procname       = "nfsd_debug",
                .data           = &nfsd_debug,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dodebug
+               .proc_handler   = proc_dodebug
        },
        {
                .procname       = "nlm_debug",
                .data           = &nlm_debug,
                .maxlen         = sizeof(int),
                .mode           = 0644,
-               .proc_handler   = &proc_dodebug
+               .proc_handler   = proc_dodebug
        },
        {
                .procname       = "transports",
                .maxlen         = 256,
                .mode           = 0444,
-               .proc_handler   = &proc_do_xprt,
+               .proc_handler   = proc_do_xprt,
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static ctl_table sunrpc_table[] = {
        {
-               .ctl_name       = CTL_SUNRPC,
                .procname       = "sunrpc",
                .mode           = 0555,
                .child          = debug_table
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 #endif
index 35fb68b..5b8a8ff 100644 (file)
@@ -120,8 +120,7 @@ static ctl_table svcrdma_parm_table[] = {
                .data           = &svcrdma_max_requests,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_max_requests,
                .extra2         = &max_max_requests
        },
@@ -130,8 +129,7 @@ static ctl_table svcrdma_parm_table[] = {
                .data           = &svcrdma_max_req_size,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_max_inline,
                .extra2         = &max_max_inline
        },
@@ -140,8 +138,7 @@ static ctl_table svcrdma_parm_table[] = {
                .data           = &svcrdma_ord,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_ord,
                .extra2         = &max_ord,
        },
@@ -151,67 +148,65 @@ static ctl_table svcrdma_parm_table[] = {
                .data           = &rdma_stat_read,
                .maxlen         = sizeof(atomic_t),
                .mode           = 0644,
-               .proc_handler   = &read_reset_stat,
+               .proc_handler   = read_reset_stat,
        },
        {
                .procname       = "rdma_stat_recv",
                .data           = &rdma_stat_recv,
                .maxlen         = sizeof(atomic_t),
                .mode           = 0644,
-               .proc_handler   = &read_reset_stat,
+               .proc_handler   = read_reset_stat,
        },
        {
                .procname       = "rdma_stat_write",
                .data           = &rdma_stat_write,
                .maxlen         = sizeof(atomic_t),
                .mode           = 0644,
-               .proc_handler   = &read_reset_stat,
+               .proc_handler   = read_reset_stat,
        },
        {
                .procname       = "rdma_stat_sq_starve",
                .data           = &rdma_stat_sq_starve,
                .maxlen         = sizeof(atomic_t),
                .mode           = 0644,
-               .proc_handler   = &read_reset_stat,
+               .proc_handler   = read_reset_stat,
        },
        {
                .procname       = "rdma_stat_rq_starve",
                .data           = &rdma_stat_rq_starve,
                .maxlen         = sizeof(atomic_t),
                .mode           = 0644,
-               .proc_handler   = &read_reset_stat,
+               .proc_handler   = read_reset_stat,
        },
        {
                .procname       = "rdma_stat_rq_poll",
                .data           = &rdma_stat_rq_poll,
                .maxlen         = sizeof(atomic_t),
                .mode           = 0644,
-               .proc_handler   = &read_reset_stat,
+               .proc_handler   = read_reset_stat,
        },
        {
                .procname       = "rdma_stat_rq_prod",
                .data           = &rdma_stat_rq_prod,
                .maxlen         = sizeof(atomic_t),
                .mode           = 0644,
-               .proc_handler   = &read_reset_stat,
+               .proc_handler   = read_reset_stat,
        },
        {
                .procname       = "rdma_stat_sq_poll",
                .data           = &rdma_stat_sq_poll,
                .maxlen         = sizeof(atomic_t),
                .mode           = 0644,
-               .proc_handler   = &read_reset_stat,
+               .proc_handler   = read_reset_stat,
        },
        {
                .procname       = "rdma_stat_sq_prod",
                .data           = &rdma_stat_sq_prod,
                .maxlen         = sizeof(atomic_t),
                .mode           = 0644,
-               .proc_handler   = &read_reset_stat,
-       },
-       {
-               .ctl_name = 0,
+               .proc_handler   = read_reset_stat,
        },
+       { },
 };
 
 static ctl_table svcrdma_table[] = {
@@ -220,21 +215,16 @@ static ctl_table svcrdma_table[] = {
                .mode           = 0555,
                .child          = svcrdma_parm_table
        },
-       {
-               .ctl_name = 0,
-       },
+       { },
 };
 
 static ctl_table svcrdma_root_table[] = {
        {
-               .ctl_name       = CTL_SUNRPC,
                .procname       = "sunrpc",
                .mode           = 0555,
                .child          = svcrdma_table
        },
-       {
-               .ctl_name = 0,
-       },
+       { },
 };
 
 void svc_rdma_cleanup(void)
index 9a63f66..7018eef 100644 (file)
@@ -86,79 +86,63 @@ static struct ctl_table_header *sunrpc_table_header;
 
 static ctl_table xr_tunables_table[] = {
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rdma_slot_table_entries",
                .data           = &xprt_rdma_slot_table_entries,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_slot_table_size,
                .extra2         = &max_slot_table_size
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rdma_max_inline_read",
                .data           = &xprt_rdma_max_inline_read,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rdma_max_inline_write",
                .data           = &xprt_rdma_max_inline_write,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rdma_inline_write_padding",
                .data           = &xprt_rdma_inline_write_padding,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
                .extra2         = &max_padding,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rdma_memreg_strategy",
                .data           = &xprt_rdma_memreg_strategy,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_memreg,
                .extra2         = &max_memreg,
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "rdma_pad_optimize",
                .data           = &xprt_rdma_pad_optimize,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec,
-       },
-       {
-               .ctl_name = 0,
+               .proc_handler   = proc_dointvec,
        },
+       { },
 };
 
 static ctl_table sunrpc_table[] = {
        {
-               .ctl_name       = CTL_SUNRPC,
                .procname       = "sunrpc",
                .mode           = 0555,
                .child          = xr_tunables_table
        },
-       {
-               .ctl_name = 0,
-       },
+       { },
 };
 
 #endif
index 37c5475..04732d0 100644 (file)
@@ -81,46 +81,38 @@ static struct ctl_table_header *sunrpc_table_header;
  */
 static ctl_table xs_tunables_table[] = {
        {
-               .ctl_name       = CTL_SLOTTABLE_UDP,
                .procname       = "udp_slot_table_entries",
                .data           = &xprt_udp_slot_table_entries,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_slot_table_size,
                .extra2         = &max_slot_table_size
        },
        {
-               .ctl_name       = CTL_SLOTTABLE_TCP,
                .procname       = "tcp_slot_table_entries",
                .data           = &xprt_tcp_slot_table_entries,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &min_slot_table_size,
                .extra2         = &max_slot_table_size
        },
        {
-               .ctl_name       = CTL_MIN_RESVPORT,
                .procname       = "min_resvport",
                .data           = &xprt_min_resvport,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xprt_min_resvport_limit,
                .extra2         = &xprt_max_resvport_limit
        },
        {
-               .ctl_name       = CTL_MAX_RESVPORT,
                .procname       = "max_resvport",
                .data           = &xprt_max_resvport,
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_minmax,
-               .strategy       = &sysctl_intvec,
+               .proc_handler   = proc_dointvec_minmax,
                .extra1         = &xprt_min_resvport_limit,
                .extra2         = &xprt_max_resvport_limit
        },
@@ -129,24 +121,18 @@ static ctl_table xs_tunables_table[] = {
                .data           = &xs_tcp_fin_timeout,
                .maxlen         = sizeof(xs_tcp_fin_timeout),
                .mode           = 0644,
-               .proc_handler   = &proc_dointvec_jiffies,
-               .strategy       = sysctl_jiffies
-       },
-       {
-               .ctl_name = 0,
+               .proc_handler   = proc_dointvec_jiffies,
        },
+       { },
 };
 
 static ctl_table sunrpc_table[] = {
        {
-               .ctl_name       = CTL_SUNRPC,
                .procname       = "sunrpc",
                .mode           = 0555,
                .child          = xs_tunables_table
        },
-       {
-               .ctl_name = 0,
-       },
+       { },
 };
 
 #endif
index 83c0930..708f5df 100644 (file)
 
 static ctl_table unix_table[] = {
        {
-               .ctl_name       = NET_UNIX_MAX_DGRAM_QLEN,
                .procname       = "max_dgram_qlen",
                .data           = &init_net.unx.sysctl_max_dgram_qlen,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       { .ctl_name = 0 }
+       { }
 };
 
 static struct ctl_path unix_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "unix", .ctl_name = NET_UNIX, },
+       { .procname = "net", },
+       { .procname = "unix", },
        { },
 };
 
index a5d3416..d2efd29 100644 (file)
@@ -19,62 +19,51 @@ static struct ctl_table_header *x25_table_header;
 
 static struct ctl_table x25_table[] = {
        {
-               .ctl_name =     NET_X25_RESTART_REQUEST_TIMEOUT,
                .procname =     "restart_request_timeout",
                .data =         &sysctl_x25_restart_request_timeout,
                .maxlen =       sizeof(int),
                .mode =         0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy =     sysctl_intvec,
                .extra1 =       &min_timer,
                .extra2 =       &max_timer,
        },
        {
-               .ctl_name =     NET_X25_CALL_REQUEST_TIMEOUT,
                .procname =     "call_request_timeout",
                .data =         &sysctl_x25_call_request_timeout,
                .maxlen =       sizeof(int),
                .mode =         0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy =     sysctl_intvec,
                .extra1 =       &min_timer,
                .extra2 =       &max_timer,
        },
        {
-               .ctl_name =     NET_X25_RESET_REQUEST_TIMEOUT,
                .procname =     "reset_request_timeout",
                .data =         &sysctl_x25_reset_request_timeout,
                .maxlen =       sizeof(int),
                .mode =         0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy =     sysctl_intvec,
                .extra1 =       &min_timer,
                .extra2 =       &max_timer,
        },
        {
-               .ctl_name =     NET_X25_CLEAR_REQUEST_TIMEOUT,
                .procname =     "clear_request_timeout",
                .data =         &sysctl_x25_clear_request_timeout,
                .maxlen =       sizeof(int),
                .mode =         0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy =     sysctl_intvec,
                .extra1 =       &min_timer,
                .extra2 =       &max_timer,
        },
        {
-               .ctl_name =     NET_X25_ACK_HOLD_BACK_TIMEOUT,
                .procname =     "acknowledgement_hold_back_timeout",
                .data =         &sysctl_x25_ack_holdback_timeout,
                .maxlen =       sizeof(int),
                .mode =         0644,
                .proc_handler = proc_dointvec_minmax,
-               .strategy =     sysctl_intvec,
                .extra1 =       &min_timer,
                .extra2 =       &max_timer,
        },
        {
-               .ctl_name =     NET_X25_FORWARD,
                .procname =     "x25_forward",
                .data =         &sysctl_x25_forward,
                .maxlen =       sizeof(int),
@@ -85,8 +74,8 @@ static struct ctl_table x25_table[] = {
 };
 
 static struct ctl_path x25_path[] = {
-       { .procname = "net", .ctl_name = CTL_NET, },
-       { .procname = "x25", .ctl_name = NET_X25, },
+       { .procname = "net", },
+       { .procname = "x25", },
        { }
 };
 
index 2e6ffb6..2e221f2 100644 (file)
@@ -13,28 +13,24 @@ static void __xfrm_sysctl_init(struct net *net)
 #ifdef CONFIG_SYSCTL
 static struct ctl_table xfrm_table[] = {
        {
-               .ctl_name       = NET_CORE_AEVENT_ETIME,
                .procname       = "xfrm_aevent_etime",
                .maxlen         = sizeof(u32),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = NET_CORE_AEVENT_RSEQTH,
                .procname       = "xfrm_aevent_rseqth",
                .maxlen         = sizeof(u32),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "xfrm_larval_drop",
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
        {
-               .ctl_name       = CTL_UNNUMBERED,
                .procname       = "xfrm_acq_expires",
                .maxlen         = sizeof(int),
                .mode           = 0644,
index 5e05dc0..ee32d18 100644 (file)
@@ -17,54 +17,49 @@ static const int zero, one = 1, max = INT_MAX;
 
 ctl_table key_sysctls[] = {
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "maxkeys",
                .data = &key_quota_maxkeys,
                .maxlen = sizeof(unsigned),
                .mode = 0644,
-               .proc_handler = &proc_dointvec_minmax,
+               .proc_handler = proc_dointvec_minmax,
                .extra1 = (void *) &one,
                .extra2 = (void *) &max,
        },
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "maxbytes",
                .data = &key_quota_maxbytes,
                .maxlen = sizeof(unsigned),
                .mode = 0644,
-               .proc_handler = &proc_dointvec_minmax,
+               .proc_handler = proc_dointvec_minmax,
                .extra1 = (void *) &one,
                .extra2 = (void *) &max,
        },
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "root_maxkeys",
                .data = &key_quota_root_maxkeys,
                .maxlen = sizeof(unsigned),
                .mode = 0644,
-               .proc_handler = &proc_dointvec_minmax,
+               .proc_handler = proc_dointvec_minmax,
                .extra1 = (void *) &one,
                .extra2 = (void *) &max,
        },
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "root_maxbytes",
                .data = &key_quota_root_maxbytes,
                .maxlen = sizeof(unsigned),
                .mode = 0644,
-               .proc_handler = &proc_dointvec_minmax,
+               .proc_handler = proc_dointvec_minmax,
                .extra1 = (void *) &one,
                .extra2 = (void *) &max,
        },
        {
-               .ctl_name = CTL_UNNUMBERED,
                .procname = "gc_delay",
                .data = &key_gc_delay,
                .maxlen = sizeof(unsigned),
                .mode = 0644,
-               .proc_handler = &proc_dointvec_minmax,
+               .proc_handler = proc_dointvec_minmax,
                .extra1 = (void *) &zero,
                .extra2 = (void *) &max,
        },
-       { .ctl_name = 0 }
+       { }
 };
index 5ae3a57..8346938 100644 (file)
@@ -1096,27 +1096,6 @@ static int tomoyo_check_single_path_permission2(struct tomoyo_domain_info *
 }
 
 /**
- * tomoyo_check_file_perm - Check permission for sysctl()'s "read" and "write".
- *
- * @domain:    Pointer to "struct tomoyo_domain_info".
- * @filename:  Filename to check.
- * @perm:      Mode ("read" or "write" or "read/write").
- * Returns 0 on success, negative value otherwise.
- */
-int tomoyo_check_file_perm(struct tomoyo_domain_info *domain,
-                          const char *filename, const u8 perm)
-{
-       struct tomoyo_path_info name;
-       const u8 mode = tomoyo_check_flags(domain, TOMOYO_MAC_FOR_FILE);
-
-       if (!mode)
-               return 0;
-       name.name = filename;
-       tomoyo_fill_path_info(&name);
-       return tomoyo_check_file_perm2(domain, &name, perm, "sysctl", mode);
-}
-
-/**
  * tomoyo_check_exec_perm - Check permission for "execute".
  *
  * @domain:   Pointer to "struct tomoyo_domain_info".
index 917f564..18369d4 100644 (file)
@@ -110,6 +110,15 @@ int tomoyo_realpath_from_path2(struct path *path, char *newname,
                spin_unlock(&dcache_lock);
                path_put(&root);
                path_put(&ns_root);
+               /* Prepend "/proc" prefix if using internal proc vfs mount. */
+               if (!IS_ERR(sp) && (path->mnt->mnt_parent == path->mnt) &&
+                   (strcmp(path->mnt->mnt_sb->s_type->name, "proc") == 0)) {
+                       sp -= 5;
+                       if (sp >= newname)
+                               memcpy(sp, "/proc", 5);
+                       else
+                               sp = ERR_PTR(-ENOMEM);
+               }
        }
        if (IS_ERR(sp))
                error = PTR_ERR(sp);
index 9548a09..8a00ade 100644 (file)
@@ -85,83 +85,6 @@ static int tomoyo_bprm_check_security(struct linux_binprm *bprm)
        return tomoyo_check_open_permission(domain, &bprm->file->f_path, 1);
 }
 
-#ifdef CONFIG_SYSCTL
-
-static int tomoyo_prepend(char **buffer, int *buflen, const char *str)
-{
-       int namelen = strlen(str);
-
-       if (*buflen < namelen)
-               return -ENOMEM;
-       *buflen -= namelen;
-       *buffer -= namelen;
-       memcpy(*buffer, str, namelen);
-       return 0;
-}
-
-/**
- * tomoyo_sysctl_path - return the realpath of a ctl_table.
- * @table: pointer to "struct ctl_table".
- *
- * Returns realpath(3) of the @table on success.
- * Returns NULL on failure.
- *
- * This function uses tomoyo_alloc(), so the caller must call tomoyo_free()
- * if this function didn't return NULL.
- */
-static char *tomoyo_sysctl_path(struct ctl_table *table)
-{
-       int buflen = TOMOYO_MAX_PATHNAME_LEN;
-       char *buf = tomoyo_alloc(buflen);
-       char *end = buf + buflen;
-       int error = -ENOMEM;
-
-       if (!buf)
-               return NULL;
-
-       *--end = '\0';
-       buflen--;
-       while (table) {
-               char num[32];
-               const char *sp = table->procname;
-
-               if (!sp) {
-                       memset(num, 0, sizeof(num));
-                       snprintf(num, sizeof(num) - 1, "=%d=", table->ctl_name);
-                       sp = num;
-               }
-               if (tomoyo_prepend(&end, &buflen, sp) ||
-                   tomoyo_prepend(&end, &buflen, "/"))
-                       goto out;
-               table = table->parent;
-       }
-       if (tomoyo_prepend(&end, &buflen, "/proc/sys"))
-               goto out;
-       error = tomoyo_encode(buf, end - buf, end);
- out:
-       if (!error)
-               return buf;
-       tomoyo_free(buf);
-       return NULL;
-}
-
-static int tomoyo_sysctl(struct ctl_table *table, int op)
-{
-       int error;
-       char *name;
-
-       op &= MAY_READ | MAY_WRITE;
-       if (!op)
-               return 0;
-       name = tomoyo_sysctl_path(table);
-       if (!name)
-               return -ENOMEM;
-       error = tomoyo_check_file_perm(tomoyo_domain(), name, op);
-       tomoyo_free(name);
-       return error;
-}
-#endif
-
 static int tomoyo_path_truncate(struct path *path, loff_t length,
                                unsigned int time_attrs)
 {
@@ -282,9 +205,6 @@ static struct security_operations tomoyo_security_ops = {
        .cred_transfer       = tomoyo_cred_transfer,
        .bprm_set_creds      = tomoyo_bprm_set_creds,
        .bprm_check_security = tomoyo_bprm_check_security,
-#ifdef CONFIG_SYSCTL
-       .sysctl              = tomoyo_sysctl,
-#endif
        .file_fcntl          = tomoyo_file_fcntl,
        .dentry_open         = tomoyo_dentry_open,
        .path_truncate       = tomoyo_path_truncate,
index cd6ba0b..ed75832 100644 (file)
@@ -18,8 +18,6 @@ struct inode;
 struct linux_binprm;
 struct pt_regs;
 
-int tomoyo_check_file_perm(struct tomoyo_domain_info *domain,
-                          const char *filename, const u8 perm);
 int tomoyo_check_exec_perm(struct tomoyo_domain_info *domain,
                           const struct tomoyo_path_info *filename);
 int tomoyo_check_open_permission(struct tomoyo_domain_info *domain,