virtiofs fix leak in setup
authorMiklos Szeredi <mszeredi@redhat.com>
Wed, 11 Nov 2020 16:22:31 +0000 (17:22 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 Dec 2020 10:53:08 +0000 (11:53 +0100)
[ Upstream commit 66ab33bf6d4341574f88b511e856a73f6f2a921e ]

This can be triggered for example by adding the "-omand" mount option,
which will be rejected and virtio_fs_fill_super() will return an error.

In such a case the allocations for fuse_conn and fuse_mount will leak due
to s_root not yet being set and so ->put_super() not being called.

Fixes: a62a8ef9d97d ("virtio-fs: add virtiofs filesystem")
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/fuse/virtio_fs.c

index 21a9e53..d2c0e58 100644 (file)
@@ -1464,6 +1464,8 @@ static int virtio_fs_get_tree(struct fs_context *fsc)
        if (!sb->s_root) {
                err = virtio_fs_fill_super(sb, fsc);
                if (err) {
+                       fuse_mount_put(fm);
+                       sb->s_fs_info = NULL;
                        deactivate_locked_super(sb);
                        return err;
                }