summaryrefslogtreecommitdiffstats
path: root/fs/d_path.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2021-05-18 03:43:01 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2021-05-19 02:08:10 +0200
commit9024348f539f810e83695df486443f45362e947a (patch)
tree11a1878019fe2c4a26d3914858ac8b463d39afd7 /fs/d_path.c
parentd_path: regularize handling of root dentry in __dentry_path() (diff)
downloadlinux-9024348f539f810e83695df486443f45362e947a.tar.xz
linux-9024348f539f810e83695df486443f45362e947a.zip
d_path: get rid of path_with_deleted()
expand in the sole caller; transform the initial prepends similar to what we'd done in dentry_path() (prepend_path() will fail the right way if we call it with negative buflen, same as __dentry_path() does). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/d_path.c')
-rw-r--r--fs/d_path.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/fs/d_path.c b/fs/d_path.c
index b3324ae7cfe2..7f3fac544bbb 100644
--- a/fs/d_path.c
+++ b/fs/d_path.c
@@ -211,23 +211,6 @@ char *d_absolute_path(const struct path *path,
return res;
}
-/*
- * same as __d_path but appends "(deleted)" for unlinked files.
- */
-static int path_with_deleted(const struct path *path,
- const struct path *root,
- char **buf, int *buflen)
-{
- prepend(buf, buflen, "", 1);
- if (d_unlinked(path->dentry)) {
- int error = prepend(buf, buflen, " (deleted)", 10);
- if (error)
- return error;
- }
-
- return prepend_path(path, root, buf, buflen);
-}
-
static int prepend_unreachable(char **buffer, int *buflen)
{
return prepend(buffer, buflen, "(unreachable)", 13);
@@ -282,7 +265,11 @@ char *d_path(const struct path *path, char *buf, int buflen)
rcu_read_lock();
get_fs_root_rcu(current->fs, &root);
- error = path_with_deleted(path, &root, &res, &buflen);
+ if (unlikely(d_unlinked(path->dentry)))
+ prepend(&res, &buflen, " (deleted)", 11);
+ else
+ prepend(&res, &buflen, "", 1);
+ error = prepend_path(path, &root, &res, &buflen);
rcu_read_unlock();
if (error < 0)