]> err.no Git - linux-2.6/commit
[PATCH] sanitize proc_sysctl
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 15 Jul 2008 12:54:06 +0000 (08:54 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 27 Jul 2008 00:53:12 +0000 (20:53 -0400)
commit9043476f726802f4b00c96d0c4f418dde48d1304
tree9ead0294bc75e219c12b44fc7eb8996248400f2a
parentae7edecc9b8810770a8e5cb9a466ea4bdcfa8401
[PATCH] sanitize proc_sysctl

* keep references to ctl_table_head and ctl_table in /proc/sys inodes
* grab the former during operations, use the latter for access to
  entry if that succeeds
* have ->d_compare() check if table should be seen for one who does lookup;
  that allows us to avoid flipping inodes - if we have the same name resolve
  to different things, we'll just keep several dentries and ->d_compare()
  will reject the wrong ones.
* have ->lookup() and ->readdir() scan the table of our inode first, then
  walk all ctl_table_header and scan ->attached_by for those that are
  attached to our directory.
* implement ->getattr().
* get rid of insane amounts of tree-walking
* get rid of the need to know dentry in ->permission() and of the contortions
  induced by that.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/proc/inode.c
fs/proc/proc_sysctl.c
include/linux/proc_fs.h
include/linux/sysctl.h
kernel/sysctl.c