From: "yebin (H)" <yebin10@huawei.com>
To: Ritesh Harjani <ritesh.list@gmail.com>,
Ye Bin <yebin@huaweicloud.com>, <tytso@mit.edu>,
<adilger.kernel@dilger.ca>, <linux-ext4@vger.kernel.org>
Cc: <jack@suse.cz>
Subject: Re: [PATCH -next 6/8] ext4: fix the error handling process in extents_kunit_init).
Date: Sat, 14 Mar 2026 10:21:00 +0800 [thread overview]
Message-ID: <69B4C60C.8010205@huawei.com> (raw)
In-Reply-To: <sea4sz73.ritesh.list@gmail.com>
On 2026/3/13 20:15, Ritesh Harjani wrote:
> Ye Bin <yebin@huaweicloud.com> writes:
>
>> From: Ye Bin <yebin10@huawei.com>
>>
>> The error processing in extents_kunit_init() is improper, causing
>> resource leakage.
>> Reconstruct the error handling process to prevent potential resource
>> leaks
>>
>> Fixes: cb1e0c1d1fad ("ext4: kunit tests for extent splitting and conversion")
>> Signed-off-by: Ye Bin <yebin10@huawei.com>
>> ---
>> fs/ext4/extents-test.c | 41 +++++++++++++++++++++++++++++------------
>> 1 file changed, 29 insertions(+), 12 deletions(-)
>>
>> diff --git a/fs/ext4/extents-test.c b/fs/ext4/extents-test.c
>> index 70d84c0a18e2..7e2796f72d45 100644
>> --- a/fs/ext4/extents-test.c
>> +++ b/fs/ext4/extents-test.c
>> @@ -222,33 +222,37 @@ static int extents_kunit_init(struct kunit *test)
>> (struct kunit_ext_test_param *)(test->param_value);
>> int err;
>>
>> - sb = sget(&ext_fs_type, NULL, ext_set, 0, NULL);
>> - if (IS_ERR(sb))
>> - return PTR_ERR(sb);
>> -
>> - sb->s_blocksize = 4096;
>> - sb->s_blocksize_bits = 12;
>> -
>> sbi = kzalloc_obj(struct ext4_sb_info);
>> if (sbi == NULL)
>> return -ENOMEM;
>>
>> + sb = sget(&ext_fs_type, NULL, ext_set, 0, NULL);
>> + if (IS_ERR(sb)) {
>> + kfree(sbi);
>> + return PTR_ERR(sb);
>> + }
>> +
>> sbi->s_sb = sb;
>> sb->s_fs_info = sbi;
>>
>> + sb->s_blocksize = 4096;
>> + sb->s_blocksize_bits = 12;
>> +
>> if (!param || !param->disable_zeroout)
>> sbi->s_extent_max_zeroout_kb = 32;
>>
>> /* setup the mock inode */
>> k_ctx.k_ei = kzalloc_obj(struct ext4_inode_info);
>> - if (k_ctx.k_ei == NULL)
>> - return -ENOMEM;
>> + if (k_ctx.k_ei == NULL) {
>> + err = -ENOMEM;
>> + goto out_deactivate;
>> + }
>> ei = k_ctx.k_ei;
>> inode = &ei->vfs_inode;
>>
>> err = ext4_es_register_shrinker(sbi);
>> if (err)
>> - return err;
>> + goto out_deactivate;
>>
>> ext4_es_init_tree(&ei->i_es_tree);
>> rwlock_init(&ei->i_es_lock);
>> @@ -264,8 +268,10 @@ static int extents_kunit_init(struct kunit *test)
>> inode->i_sb = sb;
>>
>> k_ctx.k_data = kzalloc(EXT_DATA_LEN * 4096, GFP_KERNEL);
>> - if (k_ctx.k_data == NULL)
>> - return -ENOMEM;
>> + if (k_ctx.k_data == NULL) {
>> + err = -ENOMEM;
>> + goto out_deactivate;
>> + }
>>
>> /*
>> * set the data area to a junk value
>> @@ -310,6 +316,17 @@ static int extents_kunit_init(struct kunit *test)
>> up_write(&sb->s_umount);
>>
>> return 0;
>> +
>> +out_deactivate:
>> + kfree(k_ctx.k_ei);
>> + k_ctx.k_ei = NULL;
>> +
>> + kfree(k_ctx.k_data);
>> + k_ctx.k_data = NULL;
>> +
>> + deactivate_locked_super(sb);
>
> So I guess the right thing to do for now is, what Ojaswin also mentioned
> [1]. Let's go with patch [2], as is.. and we can fix all the remaining
> issues as part of this series. With that in mind, this patch series
> needs to be applid on top of [2]. So that means.. our error handling
> should also properly take care of unregister shrinker and freeing sbi..
>
> [1]: https://lore.kernel.org/linux-ext4/abPh6GX0t22m628D@li-dc0c254c-257c-11b2-a85c-98b6c1322444.ibm.com/
> [2]: https://lore.kernel.org/linux-ext4/5bb9041471dab8ce870c191c19cbe4df57473be8.1772381213.git.ritesh.list@gmail.com/#t
>
> -ritesh
>
I will base on your patch and then create a separate patchset for the
fixes and send it.
>
>> +
>> + return err;
>> }
>>
>> /*
>> --
>> 2.34.1
>
>
> .
>
next prev parent reply other threads:[~2026-03-14 2:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-10 13:04 [PATCH -next 0/8] Fix some issues about ext4-test Ye Bin
2026-03-10 13:04 ` [PATCH -next 1/8] ext4: fix mballoc-test.c is not compiled when EXT4_KUNIT_TESTS=M Ye Bin
2026-03-11 2:44 ` kernel test robot
2026-03-11 3:26 ` kernel test robot
2026-03-10 13:04 ` [PATCH -next 2/8] ext4: introduce EXPORT_SYMBOL_FOR_EXT4_TEST() helper Ye Bin
2026-03-10 13:04 ` [PATCH -next 3/8] ext4: fix extents-test.c is not compiled when EXT4_KUNIT_TESTS=M Ye Bin
2026-03-11 6:32 ` kernel test robot
2026-03-10 13:04 ` [PATCH -next 4/8] ext4: fix miss unlock 'sb->s_umount' in extents_kunit_init() Ye Bin
2026-03-13 11:32 ` Ritesh Harjani
2026-03-10 13:04 ` [PATCH -next 5/8] ext4: fix miss free super_block in extents_kunit_exit() Ye Bin
2026-03-13 12:03 ` Ritesh Harjani
2026-03-13 14:03 ` Ojaswin Mujoo
2026-03-10 13:04 ` [PATCH -next 6/8] ext4: fix the error handling process in extents_kunit_init) Ye Bin
2026-03-13 12:15 ` Ritesh Harjani
2026-03-14 2:21 ` yebin (H) [this message]
2026-03-10 13:04 ` [PATCH -next 7/8] ext4: fix possible null-ptr-deref in extents_kunit_exit() Ye Bin
2026-03-13 12:27 ` Ritesh Harjani
2026-03-10 13:04 ` [PATCH -next 8/8] ext4: fix possible null-ptr-deref in mbt_kunit_exit() Ye Bin
2026-03-13 12:33 ` Ritesh Harjani
2026-03-13 7:16 ` [PATCH -next 0/8] Fix some issues about ext4-test Ojaswin Mujoo
2026-03-13 10:34 ` Ojaswin Mujoo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=69B4C60C.8010205@huawei.com \
--to=yebin10@huawei.com \
--cc=adilger.kernel@dilger.ca \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=ritesh.list@gmail.com \
--cc=tytso@mit.edu \
--cc=yebin@huaweicloud.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.