diff mbox series

selftests/bpf:fix a resource leak

Message ID 20240627060107.8682-1-zhujun2@cmss.chinamobile.com (mailing list archive)
State New
Headers show
Series selftests/bpf:fix a resource leak | expand

Commit Message

Zhu Jun June 27, 2024, 6:01 a.m. UTC
The requested resources should be closed before return
in main(), otherwise resource leak will occur

Signed-off-by: Zhu Jun <zhujun2@cmss.chinamobile.com>
---
 tools/testing/selftests/bpf/test_sockmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Daniel Borkmann June 28, 2024, 10:23 p.m. UTC | #1
On 6/27/24 8:01 AM, Zhu Jun wrote:
> The requested resources should be closed before return
> in main(), otherwise resource leak will occur
> 
> Signed-off-by: Zhu Jun <zhujun2@cmss.chinamobile.com>
> ---
>   tools/testing/selftests/bpf/test_sockmap.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/bpf/test_sockmap.c b/tools/testing/selftests/bpf/test_sockmap.c
> index a34e95040994..03d5dd617c4a 100644
> --- a/tools/testing/selftests/bpf/test_sockmap.c
> +++ b/tools/testing/selftests/bpf/test_sockmap.c
> @@ -2092,7 +2092,7 @@ int main(int argc, char **argv)
>   	if (err) {
>   		fprintf(stderr, "populate program: (%s) %s\n",
>   			bpf_file, strerror(errno));
> -		return 1;
> +		goto out;
>   	}
>   	running = 1;

There's one more when cgroup_setup_and_join() fails a bit higher up
where we end up leaking options.whitelist/options.blacklist. Maybe
could you reorder the free() towards the end, add a new label, set
err to cg_fd and jump there.

Thanks,
Daniel
diff mbox series

Patch

diff --git a/tools/testing/selftests/bpf/test_sockmap.c b/tools/testing/selftests/bpf/test_sockmap.c
index a34e95040994..03d5dd617c4a 100644
--- a/tools/testing/selftests/bpf/test_sockmap.c
+++ b/tools/testing/selftests/bpf/test_sockmap.c
@@ -2092,7 +2092,7 @@  int main(int argc, char **argv)
 	if (err) {
 		fprintf(stderr, "populate program: (%s) %s\n",
 			bpf_file, strerror(errno));
-		return 1;
+		goto out;
 	}
 	running = 1;