[PATCH] sysctl: Undeprecate sys_sysctl

The basic issue is that despite have been deprecated and warned about as a
very bad thing in the man pages since its inception there are a few real
users of sys_sysctl. It was my assumption that because sysctl had been
deprecated for all of 2.6 there would be no user space users by this point,
so I initially gave sys_sysctl a very short deprecation period.

Now that I know there are a few real users the only sane way to proceed
with deprecation is to push the time limit out to a year or two work and
work with distributions that have big testing pools like fedora core to
find these last remaining users.

Which means that the sys_sysctl interface needs to be maintained in the
meantime.

Since I have provided a technical measure that allows us to add new sysctl
entries without reserving more binary numbers I believe that is enough to
fix the sys_sysctl binary interface maintenance problems, because there is
no longer a need to change the binary interface at all.

Since the sys_sysctl implementation needs to stay around for a while and
the worst of the maintenance issues that caused us to occasionally break
the ABI have been addressed I don't see any advantage in continuing with
the removal of sys_sysctl.

So instead of merely increasing the deprecation period this patch removes
the deprecation of sys_sysctl and modifies the kernel to compile the code
in by default.

With committing to maintain sys_sysctl we get all of the advantages of a
fast interface for anything that needs it. Currently sys_sysctl is about
5x faster than /proc/sys, for the same string data.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Eric W. Biederman and committed by Linus Torvalds 13bb7e37 6c33eb39

+9 -22
-12
Documentation/feature-removal-schedule.txt
··· 53 53 54 54 --------------------------- 55 55 56 - What: sys_sysctl 57 - When: January 2007 58 - Why: The same information is available through /proc/sys and that is the 59 - interface user space prefers to use. And there do not appear to be 60 - any existing user in user space of sys_sysctl. The additional 61 - maintenance overhead of keeping a set of binary names gets 62 - in the way of doing a good job of maintaining this interface. 63 - 64 - Who: Eric Biederman <ebiederm@xmission.com> 65 - 66 - --------------------------- 67 - 68 56 What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl]) 69 57 When: November 2005 70 58 Files: drivers/pcmcia/: pcmcia_ioctl.c
+9 -10
init/Kconfig
··· 304 304 305 305 config SYSCTL_SYSCALL 306 306 bool "Sysctl syscall support" if EMBEDDED 307 - default n 307 + default y 308 308 select SYSCTL 309 309 ---help--- 310 - Enable the deprecated sysctl system call. sys_sysctl uses 311 - binary paths that have been found to be a major pain to maintain 312 - and use. The interface in /proc/sys is now the primary and what 313 - everyone uses. 310 + sys_sysctl uses binary paths that have been found challenging 311 + to properly maintain and use. The interface in /proc/sys 312 + using paths with ascii names is now the primary path to this 313 + information. 314 314 315 - Nothing has been using the binary sysctl interface for some 316 - time now so nothing should break if you disable sysctl syscall 317 - support, and your kernel will get marginally smaller. 315 + Almost nothing using the binary sysctl interface so if you are 316 + trying to save some space it is probably safe to disable this, 317 + making your kernel marginally smaller. 318 318 319 - Unless you have an application that uses the sys_sysctl interface 320 - you should probably say N here. 319 + If unsure say Y here. 321 320 322 321 config KALLSYMS 323 322 bool "Load all symbols for debugging/kksymoops" if EMBEDDED