procfs: make proc_get_link to use dentry instead of inode
Prepare the ground for the next "map_files" patch which needs a name of a link file to analyse. Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Cc: Pavel Emelyanov <xemul@parallels.com> Cc: Tejun Heo <tj@kernel.org> Cc: Vasiliy Kulikov <segoon@openwall.com> Cc: "Kirill A. Shutemov" <kirill@shutemov.name> Cc: Alexey Dobriyan <adobriyan@gmail.com> Cc: Al Viro <viro@ZenIV.linux.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5e6292c0f2
commit
7773fbc541
|
@ -166,9 +166,9 @@ static int get_task_root(struct task_struct *task, struct path *root)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int proc_cwd_link(struct inode *inode, struct path *path)
|
static int proc_cwd_link(struct dentry *dentry, struct path *path)
|
||||||
{
|
{
|
||||||
struct task_struct *task = get_proc_task(inode);
|
struct task_struct *task = get_proc_task(dentry->d_inode);
|
||||||
int result = -ENOENT;
|
int result = -ENOENT;
|
||||||
|
|
||||||
if (task) {
|
if (task) {
|
||||||
|
@ -183,9 +183,9 @@ static int proc_cwd_link(struct inode *inode, struct path *path)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int proc_root_link(struct inode *inode, struct path *path)
|
static int proc_root_link(struct dentry *dentry, struct path *path)
|
||||||
{
|
{
|
||||||
struct task_struct *task = get_proc_task(inode);
|
struct task_struct *task = get_proc_task(dentry->d_inode);
|
||||||
int result = -ENOENT;
|
int result = -ENOENT;
|
||||||
|
|
||||||
if (task) {
|
if (task) {
|
||||||
|
@ -1456,13 +1456,13 @@ static const struct file_operations proc_pid_set_comm_operations = {
|
||||||
.release = single_release,
|
.release = single_release,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int proc_exe_link(struct inode *inode, struct path *exe_path)
|
static int proc_exe_link(struct dentry *dentry, struct path *exe_path)
|
||||||
{
|
{
|
||||||
struct task_struct *task;
|
struct task_struct *task;
|
||||||
struct mm_struct *mm;
|
struct mm_struct *mm;
|
||||||
struct file *exe_file;
|
struct file *exe_file;
|
||||||
|
|
||||||
task = get_proc_task(inode);
|
task = get_proc_task(dentry->d_inode);
|
||||||
if (!task)
|
if (!task)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
mm = get_task_mm(task);
|
mm = get_task_mm(task);
|
||||||
|
@ -1492,7 +1492,7 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
if (!proc_fd_access_allowed(inode))
|
if (!proc_fd_access_allowed(inode))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
error = PROC_I(inode)->op.proc_get_link(inode, &nd->path);
|
error = PROC_I(inode)->op.proc_get_link(dentry, &nd->path);
|
||||||
out:
|
out:
|
||||||
return ERR_PTR(error);
|
return ERR_PTR(error);
|
||||||
}
|
}
|
||||||
|
@ -1531,7 +1531,7 @@ static int proc_pid_readlink(struct dentry * dentry, char __user * buffer, int b
|
||||||
if (!proc_fd_access_allowed(inode))
|
if (!proc_fd_access_allowed(inode))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
error = PROC_I(inode)->op.proc_get_link(inode, &path);
|
error = PROC_I(inode)->op.proc_get_link(dentry, &path);
|
||||||
if (error)
|
if (error)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -1823,9 +1823,9 @@ static int proc_fd_info(struct inode *inode, struct path *path, char *info)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int proc_fd_link(struct inode *inode, struct path *path)
|
static int proc_fd_link(struct dentry *dentry, struct path *path)
|
||||||
{
|
{
|
||||||
return proc_fd_info(inode, path, NULL);
|
return proc_fd_info(dentry->d_inode, path, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tid_fd_revalidate(struct dentry *dentry, struct nameidata *nd)
|
static int tid_fd_revalidate(struct dentry *dentry, struct nameidata *nd)
|
||||||
|
|
|
@ -253,7 +253,7 @@ extern const struct proc_ns_operations utsns_operations;
|
||||||
extern const struct proc_ns_operations ipcns_operations;
|
extern const struct proc_ns_operations ipcns_operations;
|
||||||
|
|
||||||
union proc_op {
|
union proc_op {
|
||||||
int (*proc_get_link)(struct inode *, struct path *);
|
int (*proc_get_link)(struct dentry *, struct path *);
|
||||||
int (*proc_read)(struct task_struct *task, char *page);
|
int (*proc_read)(struct task_struct *task, char *page);
|
||||||
int (*proc_show)(struct seq_file *m,
|
int (*proc_show)(struct seq_file *m,
|
||||||
struct pid_namespace *ns, struct pid *pid,
|
struct pid_namespace *ns, struct pid *pid,
|
||||||
|
|
Loading…
Reference in New Issue