Skip to content

Commit 816d369

Browse files
leitaogregkh
authored andcommitted
efivarfs: Fix memory leak of efivarfs_fs_info in fs_context error paths
[ Upstream commit 64e135f ] 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]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 44e7324 commit 816d369

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
@@ -354,10 +354,16 @@ static int efivarfs_reconfigure(struct fs_context *fc)
354354
return 0;
355355
}
356356

357+
static void efivarfs_free(struct fs_context *fc)
358+
{
359+
kfree(fc->s_fs_info);
360+
}
361+
357362
static const struct fs_context_operations efivarfs_context_ops = {
358363
.get_tree = efivarfs_get_tree,
359364
.parse_param = efivarfs_parse_param,
360365
.reconfigure = efivarfs_reconfigure,
366+
.free = efivarfs_free,
361367
};
362368

363369
static int efivarfs_init_fs_context(struct fs_context *fc)

0 commit comments

Comments
 (0)