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