diff options
Diffstat (limited to 'fs/proc/namespaces.c')
| -rw-r--r-- | fs/proc/namespaces.c | 12 | 
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/proc/namespaces.c b/fs/proc/namespaces.c index b7a47196c8c..66b51c0383d 100644 --- a/fs/proc/namespaces.c +++ b/fs/proc/namespaces.c @@ -118,7 +118,7 @@ static void *proc_ns_follow_link(struct dentry *dentry, struct nameidata *nd)  	struct super_block *sb = inode->i_sb;  	struct proc_inode *ei = PROC_I(inode);  	struct task_struct *task; -	struct dentry *ns_dentry; +	struct path ns_path;  	void *error = ERR_PTR(-EACCES);  	task = get_proc_task(inode); @@ -128,14 +128,14 @@ static void *proc_ns_follow_link(struct dentry *dentry, struct nameidata *nd)  	if (!ptrace_may_access(task, PTRACE_MODE_READ))  		goto out_put_task; -	ns_dentry = proc_ns_get_dentry(sb, task, ei->ns_ops); -	if (IS_ERR(ns_dentry)) { -		error = ERR_CAST(ns_dentry); +	ns_path.dentry = proc_ns_get_dentry(sb, task, ei->ns_ops); +	if (IS_ERR(ns_path.dentry)) { +		error = ERR_CAST(ns_path.dentry);  		goto out_put_task;  	} -	dput(nd->path.dentry); -	nd->path.dentry = ns_dentry; +	ns_path.mnt = mntget(nd->path.mnt); +	nd_jump_link(nd, &ns_path);  	error = NULL;  out_put_task:  | 
