Al Viro
2903ff019b
switch simple cases of fget_light to fdget
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 22:20:08 -04:00
Al Viro
a5b470ba06
new helpers: fdget()/fdput()
...
Signed-off-bs: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:16:32 -04:00
Al Viro
2a117354b7
switch o2hb_region_dev_write() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:26 -04:00
Al Viro
7b540d0646
proc_map_files_readdir(): don't bother with grabbing files
...
all we need is their ->f_mode, so just collect _that_
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:26 -04:00
Al Viro
cb0942b812
make get_file() return its argument
...
simplifies a bunch of callers...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:25 -04:00
Al Viro
cecb46f194
vhost_set_vring(): turn pollstart/pollstop into bool
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:12 -04:00
Al Viro
e10ce27f0d
switch prctl_set_mm_exe_file() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:12 -04:00
Al Viro
64e09fa2e1
switch xfs_find_handle() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:11 -04:00
Al Viro
1ea65c9607
switch xfs_swapext() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:11 -04:00
Al Viro
78f7d75e5d
switch coda get_device_index() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:10 -04:00
Al Viro
88b428d6e1
switch infinibarf users of fget() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:10 -04:00
Al Viro
1d3653a79c
switch vfio_group_set_container() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:09 -04:00
Al Viro
8319aa9127
switch btrfs_ioctl_clone() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:09 -04:00
Al Viro
515e0d6634
switch mqueue syscalls to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:09 -04:00
Al Viro
bdbf69437a
switch SNDRV_PCM_IOCTL_LINK to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:08 -04:00
Al Viro
4109633f4c
switch timerfd_[sg]ettime(2) to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:08 -04:00
Al Viro
5e196a9cf5
switch epoll_wait(2) to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:07 -04:00
Al Viro
ecd188159e
switch btrfs_ioctl_snap_create_transid() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:07 -04:00
Al Viro
6bdf295401
switch EXT4_IOC_MOVE_EXT to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:06 -04:00
Al Viro
4557c669ef
export fget_light
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:06 -04:00
Al Viro
399c9b862f
ext4: close struct file leak on EXT4_IOC_MOVE_EXT
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:06 -04:00
Al Viro
ecaa80fbe5
switch hpux_getdents() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:05 -04:00
Al Viro
7456a29bcf
switch itanic perfmonctl(2) to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:05 -04:00
Al Viro
866ecfdd7c
switch osf_getdirentries() to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:04 -04:00
Al Viro
132ea2479f
switch readahead(2) to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:04 -04:00
Al Viro
611443783a
switch fadvise(2) to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:04 -04:00
Al Viro
d6483b7a78
switch fchmod(2) to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:03 -04:00
Al Viro
6b48c5b207
switch fallocate(2) to fget_light()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:03 -04:00
Al Viro
bf2965d5b5
switch ftruncate(2) to fget_light
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:02 -04:00
Al Viro
f6d2ac5ca7
namei.c: fix BS comment
...
get_write_access() is needed for nfsd, not binfmt_aout (the latter
has no business doing anything of that kind, of course)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:02 -04:00
Al Viro
c6f3d81115
don't leak O_CLOEXEC into ->f_flags
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:01 -04:00
Cyrill Gorcunov
ddd3e0771b
procfs: Convert /proc/pid/fdinfo/ handling routines to seq-file v2
...
This patch converts /proc/pid/fdinfo/ handling routines to seq-file which
is needed to extend seq operations and plug in auxiliary fdinfo provides
from subsystems like eventfd/eventpoll/fsnotify.
Note the proc_fd_link no longer call for proc_fd_info, simply because
the guts of proc_fd_info() got merged into ->show() of that seq_file
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:01 -04:00
Cyrill Gorcunov
faf60af17f
procfs: Move /proc/pid/fd[info] handling code to fd.[ch]
...
This patch prepares the ground for further extension of
/proc/pid/fd[info] handling code by moving fdinfo handling
code into fs/proc/fd.c.
I think such move makes both fs/proc/base.c and fs/proc/fd.c
easier to read.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org >
Acked-by: Pavel Emelyanov <xemul@parallels.com >
CC: Al Viro <viro@ZenIV.linux.org.uk >
CC: Alexey Dobriyan <adobriyan@gmail.com >
CC: Andrew Morton <akpm@linux-foundation.org >
CC: James Bottomley <jbottomley@parallels.com >
CC: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com >
CC: Alexey Dobriyan <adobriyan@gmail.com >
CC: Matthew Helsley <matt.helsley@gmail.com >
CC: "J. Bruce Fields" <bfields@fieldses.org >
CC: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com >
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:01 -04:00
Al Viro
864bdb3b6c
new helper: daemonize_descriptors()
...
descriptor-related parts of daemonize, done right. As the
result we simplify the locking rules for ->files - we
hold task_lock in *all* cases when we modify ->files.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:00 -04:00
Al Viro
2be7fd55d4
switch spufs/coredump to iterate_fd()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:10:00 -04:00
Al Viro
179e037fc1
do_coredump(): make sure that descriptor table isn't shared
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:09:59 -04:00
Al Viro
c3c073f808
new helper: iterate_fd()
...
iterates through the opened files in given descriptor table,
calling a supplied function; we stop once non-zero is returned.
Callback gets struct file *, descriptor number and const void *
argument passed to iterator. It is called with files->file_lock
held, so it is not allowed to block.
tty_io, netprio_cgroup and selinux flush_unauthorized_files()
converted to its use.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:09:59 -04:00
Al Viro
ad47bd7252
make expand_files() and alloc_fd() static
...
no callers outside of fs/file.c left
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:09:58 -04:00
Al Viro
b8318b01a8
take __{set,clear}_{open_fd,close_on_exec}() into fs/file.c
...
nobody uses those outside anymore.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:09:58 -04:00
Al Viro
ee97cd872d
switch flush_unauthorized_files() to replace_fd()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:09:58 -04:00
Al Viro
8280d16172
new helper: replace_fd()
...
analog of dup2(), except that it takes struct file * as source.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:09:57 -04:00
Al Viro
fe17f22d7f
take purely descriptor-related stuff from fcntl.c to file.c
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:09:57 -04:00
Al Viro
6a6d27de34
take close-on-exec logics to fs/file.c, clean it up a bit
...
... and add cond_resched() there, while we are at it. We can
get large latencies as is...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:09:56 -04:00
Al Viro
723a1d7743
um: resurrect the right variant of mconsole_proc()
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:09:56 -04:00
Al Viro
483ce1d4b8
take descriptor-related part of close() to file.c
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:08:56 -04:00
Al Viro
0ee8cdfe6a
take fget() and friends to fs/file.c
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:08:56 -04:00
Al Viro
f869e8a7f7
expose a low-level variant of fd_install() for binder
...
Similar situation to that of __alloc_fd(); do not use unless you
really have to. You should not touch any descriptor table other
than your own; it's a sure sign of a really bad API design.
As with __alloc_fd(), you *must* use a first-class reference to
struct files_struct; something obtained by get_files_struct(some task)
(let alone direct task->files) will not do. It must be either
current->files, or obtained by get_files_struct(current) by the
owner of that sucker and given to you.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:08:55 -04:00
Al Viro
56007cae94
move put_unused_fd() and fd_install() to fs/file.c
...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:08:55 -04:00
Al Viro
1983e781da
trim free_fdtable_rcu()
...
embedded case isn't hit anymore
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:08:54 -04:00
Al Viro
b9e02af0ae
don't bother with call_rcu() in put_files_struct()
...
At that point nobody can see us anyway; everything that
looks at files_fdtable(files) is separated from the
guts of put_files_struct(files) - either since files is
current->files or because we fetched it under task_lock()
and hadn't dropped that yet, or because we'd bumped
files->count while holding task_lock()...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2012-09-26 21:08:54 -04:00