summaryrefslogtreecommitdiffstats
path: root/fs/d_path.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2021-05-12 22:21:43 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2021-05-19 02:15:56 +0200
commit2dac0ad17598d1e54a264ed9286fa7bdbd75a97b (patch)
tree6759819910cd2f6ed50a738f5dd1a78534702511 /fs/d_path.c
parentd_path: prepend_path(): get rid of vfsmnt (diff)
downloadlinux-2dac0ad17598d1e54a264ed9286fa7bdbd75a97b.tar.xz
linux-2dac0ad17598d1e54a264ed9286fa7bdbd75a97b.zip
d_path: prepend_path(): lift resetting b in case when we'd return 3 out of loop
preparation to extracting the loop into helper (next commit) Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/d_path.c')
-rw-r--r--fs/d_path.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/d_path.c b/fs/d_path.c
index 3836f5d0b023..9a0356cc98d3 100644
--- a/fs/d_path.c
+++ b/fs/d_path.c
@@ -115,7 +115,6 @@ restart:
/* Escaped? */
if (dentry != mnt->mnt.mnt_root) {
- b = *p;
error = 3;
break;
}
@@ -156,6 +155,9 @@ restart:
}
done_seqretry(&mount_lock, m_seq);
+ if (unlikely(error == 3))
+ b = *p;
+
if (b.len == p->len)
prepend(&b, "/", 1);