Skip to content

Commit 64e135f

Browse files
leitaoardbiesheuvel
authored andcommitted
efivarfs: Fix memory leak of efivarfs_fs_info in fs_context error paths
When processing mount options, efivarfs allocates efivarfs_fs_info (sfi) early in fs_context initialization. However, sfi is associated with the superblock and typically freed when the superblock is destroyed. If the fs_context is released (final put) before fill_super is called—such as on error paths or during reconfiguration—the sfi structure would leak, as ownership never transfers to the superblock. Implement the .free callback in efivarfs_context_ops to ensure any allocated sfi is properly freed if the fs_context is torn down before fill_super, preventing this memory leak. Suggested-by: James Bottomley <[email protected]> Fixes: 5329aa5 ("efivarfs: Add uid/gid mount options") Signed-off-by: Breno Leitao <[email protected]> Signed-off-by: Ard Biesheuvel <[email protected]>
1 parent f8b53cc commit 64e135f

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

fs/efivarfs/super.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,10 +390,16 @@ static int efivarfs_reconfigure(struct fs_context *fc)
390390
return 0;
391391
}
392392

393+
static void efivarfs_free(struct fs_context *fc)
394+
{
395+
kfree(fc->s_fs_info);
396+
}
397+
393398
static const struct fs_context_operations efivarfs_context_ops = {
394399
.get_tree = efivarfs_get_tree,
395400
.parse_param = efivarfs_parse_param,
396401
.reconfigure = efivarfs_reconfigure,
402+
.free = efivarfs_free,
397403
};
398404

399405
static int efivarfs_check_missing(efi_char16_t *name16, efi_guid_t vendor,

0 commit comments

Comments
 (0)