Skip to contentSkip to conversation

fs: umount on symlinlk leaks mnt count

PATCH Superseded Vasily Averin 1 participant 1 message Jul 20, 2014 VFS

v1 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fs: umount on symlinlk leaks mnt count

Currently umount on symlink blocks following umount:

/vz is separate mount

# ls /vz/ -al | grep test
drwxr-xr-x.  2 root root       4096 Jul 19 01:14 testdir
lrwxrwxrwx.  1 root root         11 Jul 19 01:16 testlink -> /vz/testdir
# umount -l /vz/testlink
umount: /vz/testlink: not mounted (expected)
# lsof /vz
# umount /vz
umount: /vz: device is busy. (unexpected)

Looks like an extra refcount on mnt was taken in mountpoint_last() Patch below fixes the problem on my test node.

fs/namei.c +1 -0
index 985c6f3..0d32a0f 100644
@@ -2305,6 +2305,7 @@ path_mountpoint(int dfd, const char *name, struct path *path, unsigned int flags
 			break;
 		err = mountpoint_last(&nd, path);
 		put_link(&nd, &link, cookie);
+		mntput(link.mnt);
 	}
 out:
 	if (base)