[PATCH 1/3] fs: get path in path_init()
Sascha Hauer
s.hauer at pengutronix.de
Wed Dec 10 02:15:59 PST 2025
Call path_get() in path_init() when dirfd doesn't belong to the current
directory and is not the root directory. Without it path_put() will be
called later without a previous path_get().
Reproducer:
mkdir /ram
mount -t ramfs none /ram
stat -C ram .
umount /ram
Without this patch umount fails with -EBUSY.
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
fs/fs.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/fs/fs.c b/fs/fs.c
index d884726187dd526213f8b51a68a2e0db1bb50e58..f7859304a7b5f4158db83298b586c633668301d5 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -2251,6 +2251,7 @@ static const char *path_init(int dirfd, struct nameidata *nd, unsigned flags)
nd->path.mnt = &f->fsdev->vfsmount;
nd->path.dentry = f->f_path.dentry;
+ path_get(&nd->path);
follow_mount(&nd->path);
if (*s == '/')
--
2.47.3
More information about the barebox
mailing list