kernel-aes67/fs/proc
Pavel Emelyanov 7708bfb1c8 sysctl: merge equal proc_sys_read and proc_sys_write
Many (most of) sysctls do not have a per-container sense.  E.g.
kernel.print_fatal_signals, vm.panic_on_oom, net.core.netdev_budget and so on
and so forth.  Besides, tuning then from inside a container is not even
secure.  On the other hand, hiding them completely from the container's tasks
sometimes causes user-space to stop working.

When developing net sysctl, the common practice was to duplicate a table and
drop the write bits in table->mode, but this approach was not very elegant,
lead to excessive memory consumption and was not suitable in general.

Here's the alternative solution.  To facilitate the per-container sysctls
ctl_table_root-s were introduced.  Each root contains a list of
ctl_table_header-s that are visible to different namespaces.  The idea of this
set is to add the permissions() callback on the ctl_table_root to allow ctl
root limit permissions to the same ctl_table-s.

The main user of this functionality is the net-namespaces code, but later this
will (should) be used by more and more namespaces, containers and control
groups.

Actually, this idea's core is in a single hunk in the third patch.  First two
patches are cleanups for sysctl code, while the third one mostly extends the
arguments set of some sysctl functions.

This patch:

These ->read and ->write callbacks act in a very similar way, so merge these
paths to reduce the number of places to patch later and shrink the .text size
(a bit).

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Acked-by: "David S. Miller" <davem@davemloft.net>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Alexey Dobriyan <adobriyan@sw.ru>
Cc: Denis V. Lunev <den@openvz.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-04-29 08:06:23 -07:00
..
array.c proc: seqfile convert proc_pid_status to properly handle pid namespaces 2008-02-08 09:22:24 -08:00
base.c procfs: mem permission cleanup 2008-04-29 08:06:17 -07:00
generic.c proc: introduce proc_create_data to setup de->data 2008-04-29 08:06:20 -07:00
inode-alloc.txt
inode.c proc: drop several "PDE valid/invalid" checks 2008-04-29 08:06:18 -07:00
internal.h proc: remove proc_root from drivers 2008-04-29 08:06:18 -07:00
kcore.c aout: remove unnecessary inclusions of {asm, linux}/a.out.h 2008-02-08 09:22:30 -08:00
kmsg.c
Makefile [NET]: Make /proc/net per network namespace 2007-10-10 16:49:06 -07:00
mmu.c fs/proc/mmu.c: headers butchery 2007-10-17 08:42:48 -07:00
nommu.c proc: switch to proc_create() 2008-04-29 08:06:17 -07:00
proc_devtree.c
proc_misc.c proc: remove proc_root from drivers 2008-04-29 08:06:18 -07:00
proc_net.c [NETNS]: Remove ifdef CONFIG_NET braces in fs/proc/proc_net.c. 2008-04-02 00:10:04 -07:00
proc_sysctl.c sysctl: merge equal proc_sys_read and proc_sys_write 2008-04-29 08:06:23 -07:00
proc_tty.c proc: convert /proc/tty/ldiscs to seq_file interface 2008-04-29 08:06:20 -07:00
root.c proc: introduce proc_create_data to setup de->data 2008-04-29 08:06:20 -07:00
task_mmu.c procfs task exe symlink 2008-04-29 08:06:17 -07:00
task_nommu.c procfs task exe symlink 2008-04-29 08:06:17 -07:00
vmcore.c aout: remove unnecessary inclusions of {asm, linux}/a.out.h 2008-02-08 09:22:30 -08:00