2017-09-10 11:29:44

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] btrfs: tests: Fix a memory leak in error handling path in 'run_test()'

If 'btrfs_alloc_path()' fails, we must free the resourses already
allocated, as done in the other error handling paths in this function.

Signed-off-by: Christophe JAILLET <[email protected]>
---
fs/btrfs/tests/free-space-tree-tests.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/btrfs/tests/free-space-tree-tests.c b/fs/btrfs/tests/free-space-tree-tests.c
index 1458bb0ea124..8444a018cca2 100644
--- a/fs/btrfs/tests/free-space-tree-tests.c
+++ b/fs/btrfs/tests/free-space-tree-tests.c
@@ -500,7 +500,8 @@ static int run_test(test_func_t test_func, int bitmaps, u32 sectorsize,
path = btrfs_alloc_path();
if (!path) {
test_msg("Couldn't allocate path\n");
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto out;
}

ret = add_block_group_free_space(&trans, root->fs_info, cache);
--
2.11.0


2017-09-10 11:57:08

by Qu Wenruo

[permalink] [raw]
Subject: Re: [PATCH] btrfs: tests: Fix a memory leak in error handling path in 'run_test()'



On 2017年09月10日 19:19, Christophe JAILLET wrote:
> If 'btrfs_alloc_path()' fails, we must free the resourses already
> allocated, as done in the other error handling paths in this function.
>
> Signed-off-by: Christophe JAILLET <[email protected]>

Reviewed-by: Qu Wenruo <[email protected]>

BTW, I also checked all btrfs_alloc_path() in self tests, not such leak
remaining.

Thanks,
Qu
> ---
> fs/btrfs/tests/free-space-tree-tests.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/btrfs/tests/free-space-tree-tests.c b/fs/btrfs/tests/free-space-tree-tests.c
> index 1458bb0ea124..8444a018cca2 100644
> --- a/fs/btrfs/tests/free-space-tree-tests.c
> +++ b/fs/btrfs/tests/free-space-tree-tests.c
> @@ -500,7 +500,8 @@ static int run_test(test_func_t test_func, int bitmaps, u32 sectorsize,
> path = btrfs_alloc_path();
> if (!path) {
> test_msg("Couldn't allocate path\n");
> - return -ENOMEM;
> + ret = -ENOMEM;
> + goto out;
> }
>
> ret = add_block_group_free_space(&trans, root->fs_info, cache);
>