public inbox for linux-ext4@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] e2fsprogs: fix memory leaks detected by ASAN
@ 2025-11-18 13:25 Wu Guanghao
  2025-11-18 13:26 ` [PATCH 1/2] fsck: fix memory leak of inst->type Wu Guanghao
  2025-11-18 13:26 ` [PATCH 2/2] resize: fix memory leak when exiting normally Wu Guanghao
  0 siblings, 2 replies; 10+ messages in thread
From: Wu Guanghao @ 2025-11-18 13:25 UTC (permalink / raw)
  To: tytso; +Cc: adilger.kernel, linux-ext4, yangyun50, wuguanghao3

Wu Guanghao (2):
  fsck: fix memory leak of inst->type
  resize: fix memory leak when exiting normally

 misc/fsck.c   | 1 +
 resize/main.c | 2 ++
 2 files changed, 3 insertions(+)

-- 
2.27.0


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/2] fsck: fix memory leak of inst->type
  2025-11-18 13:25 [PATCH 0/2] e2fsprogs: fix memory leaks detected by ASAN Wu Guanghao
@ 2025-11-18 13:26 ` Wu Guanghao
  2025-11-18 18:30   ` Darrick J. Wong
  2025-11-18 13:26 ` [PATCH 2/2] resize: fix memory leak when exiting normally Wu Guanghao
  1 sibling, 1 reply; 10+ messages in thread
From: Wu Guanghao @ 2025-11-18 13:26 UTC (permalink / raw)
  To: tytso; +Cc: adilger.kernel, linux-ext4, yangyun50, wuguanghao3

The function free_instance() does not release i->type, resulting in a
memory leak.

Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
---
 misc/fsck.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/misc/fsck.c b/misc/fsck.c
index 64d0e7c0..a06f2668 100644
--- a/misc/fsck.c
+++ b/misc/fsck.c
@@ -235,6 +235,7 @@ static void parse_escape(char *word)
 static void free_instance(struct fsck_instance *i)
 {
 	free(i->prog);
+	free(i->type);
 	free(i->device);
 	free(i->base_device);
 	free(i);
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] resize: fix memory leak when exiting normally
  2025-11-18 13:25 [PATCH 0/2] e2fsprogs: fix memory leaks detected by ASAN Wu Guanghao
  2025-11-18 13:26 ` [PATCH 1/2] fsck: fix memory leak of inst->type Wu Guanghao
@ 2025-11-18 13:26 ` Wu Guanghao
  2025-11-18 18:29   ` Darrick J. Wong
  1 sibling, 1 reply; 10+ messages in thread
From: Wu Guanghao @ 2025-11-18 13:26 UTC (permalink / raw)
  To: tytso; +Cc: adilger.kernel, linux-ext4, yangyun50, wuguanghao3

The main() function only releases fs when it exits through the errout or
success_exit labels. When completes normally, it does not release fs.

Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
---
 resize/main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/resize/main.c b/resize/main.c
index 08a4bbaf..71711229 100644
--- a/resize/main.c
+++ b/resize/main.c
@@ -702,6 +702,8 @@ int main (int argc, char ** argv)
 	}
 	if (fd > 0)
 		close(fd);
+
+	(void) ext2fs_close_free(&fs);
 	remove_error_table(&et_ext2_error_table);
 	return 0;
 errout:
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] resize: fix memory leak when exiting normally
  2025-11-18 13:26 ` [PATCH 2/2] resize: fix memory leak when exiting normally Wu Guanghao
@ 2025-11-18 18:29   ` Darrick J. Wong
  2025-11-19  1:52     ` Wu Guanghao
  0 siblings, 1 reply; 10+ messages in thread
From: Darrick J. Wong @ 2025-11-18 18:29 UTC (permalink / raw)
  To: Wu Guanghao; +Cc: tytso, adilger.kernel, linux-ext4, yangyun50

On Tue, Nov 18, 2025 at 09:26:01PM +0800, Wu Guanghao wrote:
> The main() function only releases fs when it exits through the errout or
> success_exit labels. When completes normally, it does not release fs.
> 
> Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
> ---
>  resize/main.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/resize/main.c b/resize/main.c
> index 08a4bbaf..71711229 100644
> --- a/resize/main.c
> +++ b/resize/main.c
> @@ -702,6 +702,8 @@ int main (int argc, char ** argv)
>  	}
>  	if (fd > 0)
>  		close(fd);
> +
> +	(void) ext2fs_close_free(&fs);

You might want to capture and print an error if one is returned, because
ext2fs_close_free will also flush the new metadata to disk.

--D

>  	remove_error_table(&et_ext2_error_table);
>  	return 0;
>  errout:
> -- 
> 2.27.0
> 
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] fsck: fix memory leak of inst->type
  2025-11-18 13:26 ` [PATCH 1/2] fsck: fix memory leak of inst->type Wu Guanghao
@ 2025-11-18 18:30   ` Darrick J. Wong
  2025-11-19  1:25     ` Wu Guanghao
  0 siblings, 1 reply; 10+ messages in thread
From: Darrick J. Wong @ 2025-11-18 18:30 UTC (permalink / raw)
  To: Wu Guanghao; +Cc: tytso, adilger.kernel, linux-ext4, yangyun50

On Tue, Nov 18, 2025 at 09:26:00PM +0800, Wu Guanghao wrote:
> The function free_instance() does not release i->type, resulting in a
> memory leak.

Does anyone still use this wrapper?  I thought everyone used the
/sbin/fsck from util-linux...

--D

> Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
> ---
>  misc/fsck.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/misc/fsck.c b/misc/fsck.c
> index 64d0e7c0..a06f2668 100644
> --- a/misc/fsck.c
> +++ b/misc/fsck.c
> @@ -235,6 +235,7 @@ static void parse_escape(char *word)
>  static void free_instance(struct fsck_instance *i)
>  {
>  	free(i->prog);
> +	free(i->type);
>  	free(i->device);
>  	free(i->base_device);
>  	free(i);
> -- 
> 2.27.0
> 
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] fsck: fix memory leak of inst->type
  2025-11-18 18:30   ` Darrick J. Wong
@ 2025-11-19  1:25     ` Wu Guanghao
  2025-11-19  6:32       ` Darrick J. Wong
  0 siblings, 1 reply; 10+ messages in thread
From: Wu Guanghao @ 2025-11-19  1:25 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: tytso, adilger.kernel, linux-ext4, yangyun50



在 2025/11/19 2:30, Darrick J. Wong 写道:
> On Tue, Nov 18, 2025 at 09:26:00PM +0800, Wu Guanghao wrote:
>> The function free_instance() does not release i->type, resulting in a
>> memory leak.
> 
> Does anyone still use this wrapper?  I thought everyone used the
> /sbin/fsck from util-linux...
> 
> --D

The issue was discovered while running the ext4 test cases in xfstests.
I cannot confirm whether other users are encountering the same problem,
but the issue definitely exists.

I also pushed a patch to fix a memory leak caused by duplicate memory
allocation in xfsprogs. If you have the time, could you please review it?
Thank you.

> 
>> Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
>> ---
>>  misc/fsck.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/misc/fsck.c b/misc/fsck.c
>> index 64d0e7c0..a06f2668 100644
>> --- a/misc/fsck.c
>> +++ b/misc/fsck.c
>> @@ -235,6 +235,7 @@ static void parse_escape(char *word)
>>  static void free_instance(struct fsck_instance *i)
>>  {
>>  	free(i->prog);
>> +	free(i->type);
>>  	free(i->device);
>>  	free(i->base_device);
>>  	free(i);
>> -- 
>> 2.27.0
>>
>>
> 
> .

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] resize: fix memory leak when exiting normally
  2025-11-18 18:29   ` Darrick J. Wong
@ 2025-11-19  1:52     ` Wu Guanghao
  2025-11-19  6:26       ` Darrick J. Wong
  0 siblings, 1 reply; 10+ messages in thread
From: Wu Guanghao @ 2025-11-19  1:52 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: tytso, adilger.kernel, linux-ext4, yangyun50



在 2025/11/19 2:29, Darrick J. Wong 写道:
> On Tue, Nov 18, 2025 at 09:26:01PM +0800, Wu Guanghao wrote:
>> The main() function only releases fs when it exits through the errout or
>> success_exit labels. When completes normally, it does not release fs.
>>
>> Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
>> ---
>>  resize/main.c | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/resize/main.c b/resize/main.c
>> index 08a4bbaf..71711229 100644
>> --- a/resize/main.c
>> +++ b/resize/main.c
>> @@ -702,6 +702,8 @@ int main (int argc, char ** argv)
>>  	}
>>  	if (fd > 0)
>>  		close(fd);
>> +
>> +	(void) ext2fs_close_free(&fs);
> 
> You might want to capture and print an error if one is returned, because
> ext2fs_close_free will also flush the new metadata to disk.
> 
> --D
> 
This is not an error, but a normal process exit. If there is an error, it will follow the errout tag.

>>  	remove_error_table(&et_ext2_error_table);
>>  	return 0;
>>  errout:
>> -- 
>> 2.27.0
>>
>>
> 
> 
> .

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] resize: fix memory leak when exiting normally
  2025-11-19  1:52     ` Wu Guanghao
@ 2025-11-19  6:26       ` Darrick J. Wong
  2025-11-20  3:45         ` Wu Guanghao
  0 siblings, 1 reply; 10+ messages in thread
From: Darrick J. Wong @ 2025-11-19  6:26 UTC (permalink / raw)
  To: Wu Guanghao; +Cc: tytso, adilger.kernel, linux-ext4, yangyun50

On Wed, Nov 19, 2025 at 09:52:19AM +0800, Wu Guanghao wrote:
> 
> 
> 在 2025/11/19 2:29, Darrick J. Wong 写道:
> > On Tue, Nov 18, 2025 at 09:26:01PM +0800, Wu Guanghao wrote:
> >> The main() function only releases fs when it exits through the errout or
> >> success_exit labels. When completes normally, it does not release fs.
> >>
> >> Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
> >> ---
> >>  resize/main.c | 2 ++
> >>  1 file changed, 2 insertions(+)
> >>
> >> diff --git a/resize/main.c b/resize/main.c
> >> index 08a4bbaf..71711229 100644
> >> --- a/resize/main.c
> >> +++ b/resize/main.c
> >> @@ -702,6 +702,8 @@ int main (int argc, char ** argv)
> >>  	}
> >>  	if (fd > 0)
> >>  		close(fd);
> >> +
> >> +	(void) ext2fs_close_free(&fs);
> > 
> > You might want to capture and print an error if one is returned, because
> > ext2fs_close_free will also flush the new metadata to disk.
> > 
> > --D
> > 
> This is not an error, but a normal process exit. If there is an error,
> it will follow the errout tag.

I can see that, but I'm talking about capturing errors returned by
the new ext2fs_close_free call itself.

--D

> >>  	remove_error_table(&et_ext2_error_table);
> >>  	return 0;
> >>  errout:
> >> -- 
> >> 2.27.0
> >>
> >>
> > 
> > 
> > .

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] fsck: fix memory leak of inst->type
  2025-11-19  1:25     ` Wu Guanghao
@ 2025-11-19  6:32       ` Darrick J. Wong
  0 siblings, 0 replies; 10+ messages in thread
From: Darrick J. Wong @ 2025-11-19  6:32 UTC (permalink / raw)
  To: Wu Guanghao; +Cc: tytso, adilger.kernel, linux-ext4, yangyun50

On Wed, Nov 19, 2025 at 09:25:00AM +0800, Wu Guanghao wrote:
> 
> 
> 在 2025/11/19 2:30, Darrick J. Wong 写道:
> > On Tue, Nov 18, 2025 at 09:26:00PM +0800, Wu Guanghao wrote:
> >> The function free_instance() does not release i->type, resulting in a
> >> memory leak.
> > 
> > Does anyone still use this wrapper?  I thought everyone used the
> > /sbin/fsck from util-linux...
> > 
> > --D
> 
> The issue was discovered while running the ext4 test cases in xfstests.
> I cannot confirm whether other users are encountering the same problem,
> but the issue definitely exists.
> 
> I also pushed a patch to fix a memory leak caused by duplicate memory
> allocation in xfsprogs. If you have the time, could you please review it?
> Thank you.

Someone else already sent a fix patch last month.

--D

> > 
> >> Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
> >> ---
> >>  misc/fsck.c | 1 +
> >>  1 file changed, 1 insertion(+)
> >>
> >> diff --git a/misc/fsck.c b/misc/fsck.c
> >> index 64d0e7c0..a06f2668 100644
> >> --- a/misc/fsck.c
> >> +++ b/misc/fsck.c
> >> @@ -235,6 +235,7 @@ static void parse_escape(char *word)
> >>  static void free_instance(struct fsck_instance *i)
> >>  {
> >>  	free(i->prog);
> >> +	free(i->type);
> >>  	free(i->device);
> >>  	free(i->base_device);
> >>  	free(i);
> >> -- 
> >> 2.27.0
> >>
> >>
> > 
> > .
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] resize: fix memory leak when exiting normally
  2025-11-19  6:26       ` Darrick J. Wong
@ 2025-11-20  3:45         ` Wu Guanghao
  0 siblings, 0 replies; 10+ messages in thread
From: Wu Guanghao @ 2025-11-20  3:45 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: tytso, adilger.kernel, linux-ext4, yangyun50



在 2025/11/19 14:26, Darrick J. Wong 写道:
> On Wed, Nov 19, 2025 at 09:52:19AM +0800, Wu Guanghao wrote:
>>
>>
>> 在 2025/11/19 2:29, Darrick J. Wong 写道:
>>> On Tue, Nov 18, 2025 at 09:26:01PM +0800, Wu Guanghao wrote:
>>>> The main() function only releases fs when it exits through the errout or
>>>> success_exit labels. When completes normally, it does not release fs.
>>>>
>>>> Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
>>>> ---
>>>>  resize/main.c | 2 ++
>>>>  1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/resize/main.c b/resize/main.c
>>>> index 08a4bbaf..71711229 100644
>>>> --- a/resize/main.c
>>>> +++ b/resize/main.c
>>>> @@ -702,6 +702,8 @@ int main (int argc, char ** argv)
>>>>  	}
>>>>  	if (fd > 0)
>>>>  		close(fd);
>>>> +
>>>> +	(void) ext2fs_close_free(&fs);
>>>
>>> You might want to capture and print an error if one is returned, because
>>> ext2fs_close_free will also flush the new metadata to disk.
>>>
>>> --D
>>>
>> This is not an error, but a normal process exit. If there is an error,
>> it will follow the errout tag.
> 
> I can see that, but I'm talking about capturing errors returned by
> the new ext2fs_close_free call itself.
> 
> --D
> 

OK, I misunderstood. I will add a check in the next version.

>>>>  	remove_error_table(&et_ext2_error_table);
>>>>  	return 0;
>>>>  errout:
>>>> -- 
>>>> 2.27.0
>>>>
>>>>
>>>
>>>
>>> .
> 
> .

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2025-11-20  3:45 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-18 13:25 [PATCH 0/2] e2fsprogs: fix memory leaks detected by ASAN Wu Guanghao
2025-11-18 13:26 ` [PATCH 1/2] fsck: fix memory leak of inst->type Wu Guanghao
2025-11-18 18:30   ` Darrick J. Wong
2025-11-19  1:25     ` Wu Guanghao
2025-11-19  6:32       ` Darrick J. Wong
2025-11-18 13:26 ` [PATCH 2/2] resize: fix memory leak when exiting normally Wu Guanghao
2025-11-18 18:29   ` Darrick J. Wong
2025-11-19  1:52     ` Wu Guanghao
2025-11-19  6:26       ` Darrick J. Wong
2025-11-20  3:45         ` Wu Guanghao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox