* [f2fs-dev] [PATCH] f2fs: use kfree() instead of kvfree() to free some memory
@ 2025-07-03 6:13 Jiazi Li
2025-07-03 11:21 ` Chao Yu via Linux-f2fs-devel
2025-07-09 18:10 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
0 siblings, 2 replies; 3+ messages in thread
From: Jiazi Li @ 2025-07-03 6:13 UTC (permalink / raw)
To: Jaegeuk Kim, Chao Yu; +Cc: linux-f2fs-devel, peixuan.qiu, Jiazi Li
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 <jqqlijiazi@gmail.com>
Signed-off-by: peixuan.qiu <peixuan.qiu@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);
/* 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:
--
2.49.0
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: use kfree() instead of kvfree() to free some memory
2025-07-03 6:13 [f2fs-dev] [PATCH] f2fs: use kfree() instead of kvfree() to free some memory Jiazi Li
@ 2025-07-03 11:21 ` Chao Yu via Linux-f2fs-devel
2025-07-09 18:10 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
1 sibling, 0 replies; 3+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-07-03 11:21 UTC (permalink / raw)
To: Jiazi Li, Jaegeuk Kim; +Cc: peixuan.qiu, linux-f2fs-devel
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 <jqqlijiazi@gmail.com>
> Signed-off-by: peixuan.qiu <peixuan.qiu@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 <chao@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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: use kfree() instead of kvfree() to free some memory
2025-07-03 6:13 [f2fs-dev] [PATCH] f2fs: use kfree() instead of kvfree() to free some memory Jiazi Li
2025-07-03 11:21 ` Chao Yu via Linux-f2fs-devel
@ 2025-07-09 18:10 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+f2fs--- via Linux-f2fs-devel @ 2025-07-09 18:10 UTC (permalink / raw)
To: Jiazi Li; +Cc: jaegeuk, peixuan.qiu, linux-f2fs-devel
Hello:
This patch was applied to jaegeuk/f2fs.git (dev)
by Jaegeuk Kim <jaegeuk@kernel.org>:
On Thu, 3 Jul 2025 14:13:04 +0800 you 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))
>
> [...]
Here is the summary with links:
- [f2fs-dev] f2fs: use kfree() instead of kvfree() to free some memory
https://git.kernel.org/jaegeuk/f2fs/c/e9705c61b1db
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-07-09 18:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-03 6:13 [f2fs-dev] [PATCH] f2fs: use kfree() instead of kvfree() to free some memory Jiazi Li
2025-07-03 11:21 ` Chao Yu via Linux-f2fs-devel
2025-07-09 18:10 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).