selftests/bpf: Fix a fd leak in error paths in open_netns
authorGeliang Tang <tanggeliang@kylinos.cn>
Tue, 23 Apr 2024 10:35:27 +0000 (18:35 +0800)
committerMartin KaFai Lau <martin.lau@kernel.org>
Wed, 24 Apr 2024 20:12:28 +0000 (13:12 -0700)
As Martin mentioned in review comment, there is an existing bug that
orig_netns_fd will be leaked in the later "goto fail;" case after
open("/proc/self/ns/net") in open_netns() in network_helpers.c. This
patch adds "close(token->orig_netns_fd);" before "free(token);" to
fix it.

Fixes: a30338840fa5 ("selftests/bpf: Move open_netns() and close_netns() into network_helpers.c")
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Link: https://lore.kernel.org/r/a104040b47c3c34c67f3f125cdfdde244a870d3c.1713868264.git.tanggeliang@kylinos.cn
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
tools/testing/selftests/bpf/network_helpers.c

index 9d63d2ac13d8d3f17170b3c29e74736c446d70ff..04676572fc1ec1a35837c66e8a375646a01cc6a4 100644 (file)
@@ -478,6 +478,8 @@ struct nstoken *open_netns(const char *name)
 
        return token;
 fail:
+       if (token->orig_netns_fd != -1)
+               close(token->orig_netns_fd);
        free(token);
        return NULL;
 }