[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