efivarfs: Free s_fs_info on unmount
authorArd Biesheuvel <ardb@kernel.org>
Fri, 8 Dec 2023 16:39:28 +0000 (17:39 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:35:15 +0000 (15:35 -0800)
[ Upstream commit 547713d502f7b4b8efccd409cff84d731a23853b ]

Now that we allocate a s_fs_info struct on fs context creation, we
should ensure that we free it again when the superblock goes away.

Fixes: 5329aa5101f7 ("efivarfs: Add uid/gid mount options")
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/efivarfs/super.c

index 05c0169..d59d967 100644 (file)
@@ -299,6 +299,8 @@ static int efivarfs_init_fs_context(struct fs_context *fc)
 
 static void efivarfs_kill_sb(struct super_block *sb)
 {
+       struct efivarfs_fs_info *sfi = sb->s_fs_info;
+
        kill_litter_super(sb);
 
        if (!efivar_is_available())
@@ -306,6 +308,7 @@ static void efivarfs_kill_sb(struct super_block *sb)
 
        /* Remove all entries and destroy */
        efivar_entry_iter(efivarfs_destroy, &efivarfs_list, NULL);
+       kfree(sfi);
 }
 
 static struct file_system_type efivarfs_type = {