]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests/net: bind_bhash: fix memory leak in bind_socket
authorlonglong yan <yanlonglong@kylinos.cn>
Mon, 1 Jun 2026 01:39:27 +0000 (09:39 +0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 3 Jun 2026 02:27:25 +0000 (19:27 -0700)
The getaddrinfo() call in bind_socket() dynamically allocates memory
for the result linked list that must be freed with freeaddrinfo().
However, none of the code paths after a successful getaddrinfo() call
free this memory, causing a leak in every invocation of bind_socket().

Signed-off-by: longlong yan <yanlonglong@kylinos.cn>
Link: https://patch.msgid.link/20260601013927.1835-1-yanlonglong@kylinos.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/bind_bhash.c

index da04b0b19b73ca1bb8ad0424b01fd8a8b6506e81..2bd10077744840d93681856a271101d2610cff26 100644 (file)
@@ -52,18 +52,19 @@ static int bind_socket(int opt, const char *addr)
                err = setsockopt(sock_fd, SOL_SOCKET, opt, &reuse, sizeof(reuse));
                if (err) {
                        perror("setsockopt failed");
-                       goto cleanup;
+                       goto err_free_info;
                }
        }
 
        err = bind(sock_fd, res->ai_addr, res->ai_addrlen);
        if (err) {
                perror("failed to bind to port");
-               goto cleanup;
+               goto err_free_info;
        }
-
+       freeaddrinfo(res);
        return sock_fd;
-
+err_free_info:
+       freeaddrinfo(res);
 cleanup:
        close(sock_fd);
        return err;