From: Fei Li <shirley17...@gmail.com> For qemu_signalfd_compat: set errno, do some cleanup, and return -1 to replace the temporary &error_abort when failing to create sigwait_compat.
Cc: Markus Armbruster <arm...@redhat.com> Cc: Eric Blake <ebl...@redhat.com> Signed-off-by: Fei Li <shirley17...@gmail.com> --- util/compatfd.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/util/compatfd.c b/util/compatfd.c index c3d8448264..9d642475fc 100644 --- a/util/compatfd.c +++ b/util/compatfd.c @@ -71,6 +71,7 @@ static int qemu_signalfd_compat(const sigset_t *mask) struct sigfd_compat_info *info; QemuThread thread; int fds[2]; + int ret; info = malloc(sizeof(*info)); if (info == NULL) { @@ -89,9 +90,15 @@ static int qemu_signalfd_compat(const sigset_t *mask) memcpy(&info->mask, mask, sizeof(*mask)); info->fd = fds[1]; - /* TODO: let the further caller handle the error instead of abort() here */ - qemu_thread_create(&thread, "signalfd_compat", sigwait_compat, - info, QEMU_THREAD_DETACHED, &error_abort); + ret = qemu_thread_create(&thread, "signalfd_compat", sigwait_compat, + info, QEMU_THREAD_DETACHED, NULL); + if (ret < 0) { + close(fds[0]); + close(fds[1]); + free(info); + errno = -ret; + return -1; + } return fds[0]; } -- 2.17.2 (Apple Git-113)