diff options
author | Aleksa Sarai <cyphar@cyphar.com> | 2019-12-06 15:13:28 +0100 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2019-12-09 01:09:38 +0100 |
commit | 1bc82070fa2763bdca626fa8bde72b35f11e8960 (patch) | |
tree | c64975083207b96e9d763e592d0ac5432c1cc97d /fs/proc/namespaces.c | |
parent | nsfs: clean-up ns_get_path() signature to return int (diff) | |
download | linux-1bc82070fa2763bdca626fa8bde72b35f11e8960.tar.xz linux-1bc82070fa2763bdca626fa8bde72b35f11e8960.zip |
namei: allow nd_jump_link() to produce errors
In preparation for LOOKUP_NO_MAGICLINKS, it's necessary to add the
ability for nd_jump_link() to return an error which the corresponding
get_link() caller must propogate back up to the VFS.
Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/proc/namespaces.c')
-rw-r--r-- | fs/proc/namespaces.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/fs/proc/namespaces.c b/fs/proc/namespaces.c index 08dd94df1a66..a8cca516f1a9 100644 --- a/fs/proc/namespaces.c +++ b/fs/proc/namespaces.c @@ -51,11 +51,15 @@ static const char *proc_ns_get_link(struct dentry *dentry, if (!task) return ERR_PTR(-EACCES); - if (ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) { - error = ns_get_path(&ns_path, task, ns_ops); - if (!error) - nd_jump_link(&ns_path); - } + if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) + goto out; + + error = ns_get_path(&ns_path, task, ns_ops); + if (error) + goto out; + + error = nd_jump_link(&ns_path); +out: put_task_struct(task); return ERR_PTR(error); } |