fix the struct mount leak in umount_tree()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 24 Jul 2019 16:45:46 +0000 (12:45 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 26 Jul 2019 11:59:06 +0000 (07:59 -0400)
commit19a1c4092e7ca1ad1a72ac5535f902c483372cd5
treed7bbba61680553364deec2a068fe0da41f1905cc
parent18253e034d2aeee140f82fc9fe89c4bce5c81799
fix the struct mount leak in umount_tree()

We need to drop everything we remove from the tree, whether
mnt_has_parent() is true or not.  Usually the bug manifests as a slow
memory leak (leaked struct mount for initramfs); it becomes much more
visible in mount_subtree() users, such as btrfs.  There we leak
a struct mount for btrfs superblock being mounted, which prevents
fs shutdown on subsequent umount.

Fixes: 56cbb429d911 ("switch the remnants of releasing the mountpoint away from fs_pin")
Reported-by: Nikolay Borisov <nborisov@suse.com>
Tested-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namespace.c