Hello Denis, On 2020/6/8 23:41, Denis Efremov wrote: > Use kfree() instead of kvfree() to free super in read_raw_super_block() > because the memory is allocated with kzalloc() in the function. > Use kfree() instead of kvfree() to free sbi in f2fs_fill_super() and > f2fs_put_super() because the memory is allocated with kzalloc(). > > Fixes: 5222595d093e ("f2fs: use kvmalloc, if kmalloc is failed") > Signed-off-by: Denis Efremov <efre...@linux.com>
I found two missing cases, so how about this? diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index f3c151169542..f913a63e93f0 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1206,7 +1206,7 @@ static void f2fs_put_super(struct super_block *sb) sb->s_fs_info = NULL; if (sbi->s_chksum_driver) crypto_free_shash(sbi->s_chksum_driver); - kvfree(sbi->raw_super); + kfree(sbi->raw_super); destroy_device_list(sbi); f2fs_destroy_xattr_caches(sbi); @@ -1221,7 +1221,7 @@ static void f2fs_put_super(struct super_block *sb) #ifdef CONFIG_UNICODE utf8_unload(sbi->s_encoding); #endif - kvfree(sbi); + kfree(sbi); } int f2fs_sync_fs(struct super_block *sb, int sync) @@ -3101,7 +3101,7 @@ static int read_raw_super_block(struct f2fs_sb_info *sbi, /* No valid superblock */ if (!*raw_super) - kvfree(super); + kfree(super); else err = 0; @@ -3779,11 +3779,11 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent) #endif kvfree(options); free_sb_buf: - kvfree(raw_super); + kfree(raw_super); free_sbi: if (sbi->s_chksum_driver) crypto_free_shash(sbi->s_chksum_driver); - kvfree(sbi); + kfree(sbi); /* give only one another chance */ if (retry_cnt > 0 && skip_recovery) {