|
Message-ID: <20110909062210.GO28162@sun> Date: Fri, 9 Sep 2011 10:22:11 +0400 From: Cyrill Gorcunov <gorcunov@...il.com> To: Andrew Morton <akpm@...ux-foundation.org> Cc: Vasiliy Kulikov <segoon@...nwall.com>, Tejun Heo <tj@...nel.org>, "Kirill A. Shutemov" <kirill@...temov.name>, containers@...ts.osdl.org, linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org, Nathan Lynch <ntl@...ox.com>, kernel-hardening@...ts.openwall.com, Oren Laadan <orenl@...columbia.edu>, Daniel Lezcano <dlezcano@...ibm.com>, Glauber Costa <glommer@...allels.com>, James Bottomley <jbottomley@...allels.com>, Alexey Dobriyan <adobriyan@...il.com>, Al Viro <viro@...IV.linux.org.uk>, Pavel Emelyanov <xemul@...allels.com> Subject: Re: [patch 2/2] fs, proc: Introduce the /proc/<pid>/map_files/ directory v6 On Thu, Sep 08, 2011 at 11:00:20PM -0700, Andrew Morton wrote: ... > > > > Hmm. I never saw this warning. (Andrew, I'm still unable to fetch > > your current -mm tree, is there some place other than kernel.org? > > Nope, sorry - we're dead in the water at present. > > > So the patch is done on top of 3.1-rc3). I guess this warrning is > > from p = flex_array_get(fa, i); ? (since I don't have any warning > > at all). > > The warning is from > > ei->op.proc_get_link = proc_map_files_get_link; > > The lhs has type > > union proc_op { > int (*proc_get_link)(struct inode *, struct path *); > > and the rhs has type > > static int proc_map_files_get_link(struct dentry *dentry, struct path *path) > > So we end up passing an inode* to a function which expects a dentry*. > > That's in 3.1-rc4. proc_op.proc_get_link() hasn't changed since 3.0 (at least). Crap. I know what happened. At first proposal time Tejun (iirc ;) said that is might be better to separate proc_get_link change. I did so... and of course I forgot to send it out ;) Ie it's in my queue and I dont see any warnings for that reason. Sorry for that. Attached below. --- From: Cyrill Gorcunov <gorcunov@...nvz.org> Subject: fs, proc: Make proc_get_link to use dentry instead of inode This patch prepares the ground for the next "map_files" patch which needs a name of a link file to analyse. So instead of squashing this change into one big patch the separate one is done. Signed-off-by: Cyrill Gorcunov <gorcunov@...nvz.org> CC: Pavel Emelyanov <xemul@...allels.com> CC: Tejun Heo <tj@...nel.org> CC: Vasiliy Kulikov <segoon@...nwall.com> CC: "Kirill A. Shutemov" <kirill@...temov.name> CC: Alexey Dobriyan <adobriyan@...il.com> CC: Al Viro <viro@...IV.linux.org.uk> CC: Andrew Morton <akpm@...ux-foundation.org> --- fs/proc/base.c | 20 ++++++++++---------- include/linux/proc_fs.h | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) Index: linux-2.6.git/fs/proc/base.c =================================================================== --- linux-2.6.git.orig/fs/proc/base.c +++ linux-2.6.git/fs/proc/base.c @@ -165,9 +165,9 @@ static int get_task_root(struct task_str 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; if (task) { @@ -182,9 +182,9 @@ static int proc_cwd_link(struct inode *i 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; if (task) { @@ -1580,13 +1580,13 @@ static const struct file_operations proc .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 mm_struct *mm; struct file *exe_file; - task = get_proc_task(inode); + task = get_proc_task(dentry->d_inode); if (!task) return -ENOENT; mm = get_task_mm(task); @@ -1616,7 +1616,7 @@ static void *proc_pid_follow_link(struct if (!proc_fd_access_allowed(inode)) 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: return ERR_PTR(error); } @@ -1655,7 +1655,7 @@ static int proc_pid_readlink(struct dent if (!proc_fd_access_allowed(inode)) goto out; - error = PROC_I(inode)->op.proc_get_link(inode, &path); + error = PROC_I(inode)->op.proc_get_link(dentry, &path); if (error) goto out; @@ -1947,9 +1947,9 @@ static int proc_fd_info(struct inode *in 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) Index: linux-2.6.git/include/linux/proc_fs.h =================================================================== --- linux-2.6.git.orig/include/linux/proc_fs.h +++ linux-2.6.git/include/linux/proc_fs.h @@ -253,7 +253,7 @@ extern const struct proc_ns_operations u extern const struct proc_ns_operations ipcns_operations; 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_show)(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, Cyrill
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.