Commit 7773fbc5 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Linus Torvalds

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: default avatarCyrill 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 5e6292c0
...@@ -166,9 +166,9 @@ static int get_task_root(struct task_struct *task, struct path *root) ...@@ -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) ...@@ -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 = { ...@@ -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) ...@@ -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 ...@@ -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) ...@@ -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; ...@@ -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,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment