diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2018-05-03 03:26:16 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2018-05-22 20:28:03 +0200 |
commit | 1bbc55131e59bd099fdc568d3aa0b42634dbd188 (patch) | |
tree | 42f965fe9a163a3bdaf8d8a51a6649afbf7118ce /fs/proc/internal.h | |
parent | cifs_lookup(): switch to d_splice_alias() (diff) | |
download | linux-1bbc55131e59bd099fdc568d3aa0b42634dbd188.tar.xz linux-1bbc55131e59bd099fdc568d3aa0b42634dbd188.zip |
procfs: get rid of ancient BS in pid_revalidate() uses
First of all, calling pid_revalidate() in the end of <pid>/* lookups
is *not* about closing any kind of races; that used to be true once
upon a time, but these days those comments are actively misleading.
Especially since pid_revalidate() doesn't even do d_drop() on
failure anymore. It doesn't matter, anyway, since once
pid_revalidate() starts returning false, ->d_delete() of those
dentries starts saying "don't keep"; they won't get stuck in
dcache any longer than they are pinned.
These calls cannot be just removed, though - the side effect of
pid_revalidate() (updating i_uid/i_gid/etc.) is what we are calling
it for here.
Let's separate the "update ownership" into a new helper (pid_update_inode())
and use it, both in lookups and in pid_revalidate() itself.
The comments in pid_revalidate() are also out of date - they refer to
the time when pid_revalidate() used to call d_drop() directly...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/proc/internal.h')
-rw-r--r-- | fs/proc/internal.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/proc/internal.h b/fs/proc/internal.h index 0f1692e63cb6..04a455b9ae69 100644 --- a/fs/proc/internal.h +++ b/fs/proc/internal.h @@ -147,7 +147,7 @@ extern const struct dentry_operations pid_dentry_operations; extern int pid_getattr(const struct path *, struct kstat *, u32, unsigned int); extern int proc_setattr(struct dentry *, struct iattr *); extern struct inode *proc_pid_make_inode(struct super_block *, struct task_struct *, umode_t); -extern int pid_revalidate(struct dentry *, unsigned int); +extern void pid_update_inode(struct task_struct *, struct inode *); extern int pid_delete_dentry(const struct dentry *); extern int proc_pid_readdir(struct file *, struct dir_context *); extern struct dentry *proc_pid_lookup(struct inode *, struct dentry *, unsigned int); |