On 7/3/25 14:13, Jiazi Li wrote:
> options in f2fs_fill_super is alloc by kstrdup:
>       options = kstrdup((const char *)data, GFP_KERNEL)
> sit_bitmap[_mir], nat_bitmap[_mir] are alloc by kmemdup:
>       sit_i->sit_bitmap = kmemdup(src_bitmap, sit_bitmap_size, GFP_KERNEL);
>       sit_i->sit_bitmap_mir = kmemdup(src_bitmap,
>                                       sit_bitmap_size, GFP_KERNEL);
>       nm_i->nat_bitmap = kmemdup(version_bitmap, nm_i->bitmap_size,
>                                       GFP_KERNEL);
>       nm_i->nat_bitmap_mir = kmemdup(version_bitmap, nm_i->bitmap_size,
>                                       GFP_KERNEL);
> write_io is alloc by f2fs_kmalloc:
>       sbi->write_io[i] = f2fs_kmalloc(sbi,
>                       array_size(n, sizeof(struct f2fs_bio_info))
> 
> Use kfree is more efficient.
> 
> Signed-off-by: Jiazi Li <jqqliji...@gmail.com>
> Signed-off-by: peixuan.qiu <peixuan....@transsion.com>
> ---
>  fs/f2fs/node.c    | 4 ++--
>  fs/f2fs/segment.c | 4 ++--
>  fs/f2fs/super.c   | 8 ++++----
>  3 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
> index 2fd287f2bca4..be3d38d1fdee 100644
> --- a/fs/f2fs/node.c
> +++ b/fs/f2fs/node.c
> @@ -3408,10 +3408,10 @@ void f2fs_destroy_node_manager(struct f2fs_sb_info 
> *sbi)
>       }
>       kvfree(nm_i->free_nid_count);
>  
> -     kvfree(nm_i->nat_bitmap);
> +     kfree(nm_i->nat_bitmap);
>       kvfree(nm_i->nat_bits);
>  #ifdef CONFIG_F2FS_CHECK_FS
> -     kvfree(nm_i->nat_bitmap_mir);
> +     kfree(nm_i->nat_bitmap_mir);
>  #endif
>       sbi->nm_info = NULL;
>       kfree(nm_i);
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 5653716460ea..b6baf099c407 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -5813,9 +5813,9 @@ static void destroy_sit_info(struct f2fs_sb_info *sbi)
>       kvfree(sit_i->dirty_sentries_bitmap);
>  
>       SM_I(sbi)->sit_info = NULL;
> -     kvfree(sit_i->sit_bitmap);
> +     kfree(sit_i->sit_bitmap);
>  #ifdef CONFIG_F2FS_CHECK_FS
> -     kvfree(sit_i->sit_bitmap_mir);
> +     kfree(sit_i->sit_bitmap_mir);
>       kvfree(sit_i->invalid_segmap);
>  #endif
>       kfree(sit_i);
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index 9b58cf891a66..c4810ddc1db0 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -1718,7 +1718,7 @@ static void f2fs_put_super(struct super_block *sb)
>       destroy_percpu_info(sbi);
>       f2fs_destroy_iostat(sbi);
>       for (i = 0; i < NR_PAGE_TYPE; i++)
> -             kvfree(sbi->write_io[i]);
> +             kfree(sbi->write_io[i]);
>  #if IS_ENABLED(CONFIG_UNICODE)
>       utf8_unload(sb->s_encoding);
>  #endif
> @@ -4935,7 +4935,7 @@ static int f2fs_fill_super(struct super_block *sb, void 
> *data, int silent)
>               if (err)
>                       goto sync_free_meta;
>       }
> -     kvfree(options);
> +     kfree(options);

It will conflict w/ new mount API patchset, anyway, it looks good to me.

Reviewed-by: Chao Yu <c...@kernel.org>

Thanks,

>  
>       /* recover broken superblock */
>       if (recovery) {
> @@ -5018,7 +5018,7 @@ static int f2fs_fill_super(struct super_block *sb, void 
> *data, int silent)
>       f2fs_destroy_iostat(sbi);
>  free_bio_info:
>       for (i = 0; i < NR_PAGE_TYPE; i++)
> -             kvfree(sbi->write_io[i]);
> +             kfree(sbi->write_io[i]);
>  
>  #if IS_ENABLED(CONFIG_UNICODE)
>       utf8_unload(sb->s_encoding);
> @@ -5030,7 +5030,7 @@ static int f2fs_fill_super(struct super_block *sb, void 
> *data, int silent)
>               kfree(F2FS_OPTION(sbi).s_qf_names[i]);
>  #endif
>       fscrypt_free_dummy_policy(&F2FS_OPTION(sbi).dummy_enc_policy);
> -     kvfree(options);
> +     kfree(options);
>  free_sb_buf:
>       kfree(raw_super);
>  free_sbi:



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to