selftests/bpf: Fix a fd leak in an error path in network_helpers.c
authorMartin KaFai Lau <martin.lau@kernel.org>
Thu, 16 Mar 2023 00:07:26 +0000 (17:07 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 May 2023 14:03:18 +0000 (23:03 +0900)
[ Upstream commit 226efec2b0efad60d4a6c4b2c3a8710dafc4dc21 ]

In __start_server, it leaks a fd when setsockopt(SO_REUSEPORT) fails.
This patch fixes it.

Fixes: eed92afdd14c ("bpf: selftest: Test batching and bpf_(get|set)sockopt in bpf tcp iter")
Reported-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Yonghong Song <yhs@fb.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/bpf/20230316000726.1016773-2-martin.lau@linux.dev
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/testing/selftests/bpf/network_helpers.c

index 1f37adff7632c87ef76ab9471af1dcc9ffa187aa..1fa4672380a9248f692da26fd5dc8a51fb423205 100644 (file)
@@ -95,7 +95,7 @@ static int __start_server(int type, int protocol, const struct sockaddr *addr,
        if (reuseport &&
            setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on))) {
                log_err("Failed to set SO_REUSEPORT");
-               return -1;
+               goto error_close;
        }
 
        if (bind(fd, addr, addrlen) < 0) {