Commit d4a85ac217 for qemu.org
commit d4a85ac217b653da355f256791d4abd15980022a
Author: Daniel P. Berrangé <berrange@redhat.com>
Date: Mon Oct 26 16:38:49 2026 +0000
qtest: don't close listener socket in qtest_socket_accept
The listener FD passed into qtest_socket_accept should be
considered owned by the caller, and thus is is inappropriate
and unusual to close it in the method.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index dcce889ccc..7f66c1bbb3 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -132,7 +132,6 @@ static int qtest_socket_accept(QTestState *s, int sock)
(void *)&timeout, sizeof(timeout))) {
fprintf(stderr, "%s failed to set SO_RCVTIMEO: %s\n",
__func__, strerror(errno));
- close(sock);
return -1;
}
@@ -140,7 +139,7 @@ static int qtest_socket_accept(QTestState *s, int sock)
if (!qtest_probe_child(s)) {
fprintf(stderr,
"child process unexpectedly exited, skipping socket accept\n");
- goto cleanup;
+ return -1;
}
addrlen = sizeof(addr);
@@ -154,9 +153,6 @@ static int qtest_socket_accept(QTestState *s, int sock)
fprintf(stderr, "%s failed: %s\n", __func__, strerror(errno));
}
- cleanup:
- close(sock);
-
return ret;
}
@@ -562,6 +558,8 @@ void qtest_connect(QTestState *s)
unlink(socket_path);
unlink(qmp_socket_path);
g_assert(s->fd >= 0 && s->qmp_fd >= 0);
+ close(s->sock);
+ close(s->qmpsock);
s->sock = s->qmpsock = -1;
/* ask endianness of the target */
s->big_endian = qtest_query_target_endianness(s);
@@ -671,6 +669,7 @@ QTestState *qtest_init_with_serial(const char *extra_args, int *sock_fd)
*sock_fd = qtest_socket_accept(qts, sock_fd_init);
+ close(sock_fd_init);
unlink(sock_path);
g_free(sock_path);
rmdir(sock_dir);