fs: umount on symlinlk leaks mnt count
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.
Signed-off-by Vasily Averin <[email protected]>
fs/namei.c +1 -0
@@ -2305,6 +2305,7 @@ path_mountpoint(int dfd, const char *name, struct path *path, unsigned int flagsbreak ; err =mountpoint_last (&nd, path);put_link (&nd, &link, cookie); +mntput (link.mnt); } out:if (base)