From nobody Sat May 18 14:54:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1676235055; cv=none; d=zohomail.com; s=zohoarc; b=Zl4m4tQsu4V4AzI8k0iKYljazQeL/sNNC3SCcPFhrLSNpOnaPWFZh+JKmY/r5Rb2m7vYbkz4MBcM9p89tO+UljvaBbSMScGm180mRtDgjgV1hC1lpfCCAUkFSI3dp2rHDlR/reFHraj/HOFcdOCLRfJC/GRb/s04h1NHmWVvzaw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676235055; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8kckJW6NrYERj2YRX4n2tekh9JIbkIXzts4lGY/hhGI=; b=CrTheRYXJn/8dDrs+heBoMeaKXb9RM8nooigFQlGN6l4k9+4qaZm64vZpFUEcLN2PKIINZdro5/OdJhjGUdzTONLgKxyVEL8NLef/ub/tXF58np2mI3tjq2g5KktRKiJUdLD0CrDNs4pv5w3PArD7Xoxjbmk6bCqS1f1tyZtOYY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 167623505507616.537653475565776; Sun, 12 Feb 2023 12:50:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pRJIr-0004jR-3C; Sun, 12 Feb 2023 15:50:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRJIN-0004Qp-EU for qemu-devel@nongnu.org; Sun, 12 Feb 2023 15:50:03 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRJIM-0001wC-4t for qemu-devel@nongnu.org; Sun, 12 Feb 2023 15:49:59 -0500 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-210-NRwRLrDyM9q4UeJoDGdNtw-1; Sun, 12 Feb 2023 15:49:53 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 79A53380673B; Sun, 12 Feb 2023 20:49:51 +0000 (UTC) Received: from localhost (unknown [10.39.208.2]) by smtp.corp.redhat.com (Postfix) with ESMTP id 93B8C492B04; Sun, 12 Feb 2023 20:49:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1676234997; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8kckJW6NrYERj2YRX4n2tekh9JIbkIXzts4lGY/hhGI=; b=ewKoV5qslrH2wdtnfC4h4tN3FmyeJU9+wFEGk93clVUJUtB+hwZZ7dDD3PHCPS6WV3txe+ nt9ijM/rGMFNFGwzUe3VdjJjQci1+24UoPnYQwGZ/pShMoEgZgR8o5Jb39vAoxfSoJoDVS SS1OlXT1FMI2BFkdXI8zUqRFXbik6l8= X-MC-Unique: NRwRLrDyM9q4UeJoDGdNtw-1 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefan Weil , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Joel Stanley , Laurent Vivier , Thomas Huth , Jason Wang , qemu-arm@nongnu.org, Stefan Berger , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH 1/4] tests: use closesocket() Date: Mon, 13 Feb 2023 00:49:39 +0400 Message-Id: <20230212204942.1905959-2-marcandre.lureau@redhat.com> In-Reply-To: <20230212204942.1905959-1-marcandre.lureau@redhat.com> References: <20230212204942.1905959-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1676235056518100001 From: Marc-Andr=C3=A9 Lureau Because they are actually sockets... Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Thomas Huth --- tests/unit/socket-helpers.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unit/socket-helpers.c b/tests/unit/socket-helpers.c index eecadf3a3c..914b3aa0cf 100644 --- a/tests/unit/socket-helpers.c +++ b/tests/unit/socket-helpers.c @@ -117,13 +117,13 @@ static int socket_can_bind_connect(const char *hostna= me, int family) =20 cleanup: if (afd !=3D -1) { - close(afd); + closesocket(afd); } if (cfd !=3D -1) { - close(cfd); + closesocket(cfd); } if (lfd !=3D -1) { - close(lfd); + closesocket(lfd); } if (res) { freeaddrinfo(res); --=20 2.39.1 From nobody Sat May 18 14:54:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1676235091; cv=none; d=zohomail.com; s=zohoarc; b=ceevjVG4mpHAEAnMw7VxxHEF7o+Bx2xIdtwepUR+JAEfExaoO2fCr0jCT3iL5P0+z+y9U4A7HLTvaEIOAff32rqKhLps1zHG+Oqki0THnh8+JiFb37pqn5+gUafllDLoOT9iCPoL6p3kVu2znQTyYwFjXhnLSQKH5vbUYacxvd8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676235091; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3pJ5iRRQglwGjgFqTu7IRkpDZuwu6Z4zyssyU6K71Ng=; b=RZKMiBSwAO3S88z3ARl6zmqiXmkzA371EXMTti7CsnELX37KkgnTGLKT0FEyspfp6cNi8cDGTcpa0fG1J5jmwk/KppSnO8pgae+v5402JVtEPjR4b3qlG/22Kn7s/4eKpG4O98kdkqZ1m6h3kuVYVkwzdgF1Woy4YtJhEtpJx/Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1676235091975315.379876926242; Sun, 12 Feb 2023 12:51:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pRJJ2-00050v-5C; Sun, 12 Feb 2023 15:50:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRJIR-0004Sn-Bp for qemu-devel@nongnu.org; Sun, 12 Feb 2023 15:50:03 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRJIP-0001x4-8g for qemu-devel@nongnu.org; Sun, 12 Feb 2023 15:50:02 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-516-9TaKZNZ6MHmbMEeVlU-EvA-1; Sun, 12 Feb 2023 15:49:57 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 69CE7811E6E; Sun, 12 Feb 2023 20:49:55 +0000 (UTC) Received: from localhost (unknown [10.39.208.2]) by smtp.corp.redhat.com (Postfix) with ESMTP id 676C5140EBF4; Sun, 12 Feb 2023 20:49:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1676235000; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3pJ5iRRQglwGjgFqTu7IRkpDZuwu6Z4zyssyU6K71Ng=; b=IAHY6M8C8/w3dNAGwVSwsmOl8PblFOd9SXVIWnqpUgL043iSnHdmqvSvZkyaEid3aOyT+/ lVwiBWUHOzHjdswwF7umd9gsNpYKFqeEW2y6fug3Ik9GmeootejE55Zcm3VmqrgTBArWT4 +20MlfFpax/oFI0q/IuSKn1r8RYqxoc= X-MC-Unique: 9TaKZNZ6MHmbMEeVlU-EvA-1 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefan Weil , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Joel Stanley , Laurent Vivier , Thomas Huth , Jason Wang , qemu-arm@nongnu.org, Stefan Berger , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH 2/4] io: use closesocket() Date: Mon, 13 Feb 2023 00:49:40 +0400 Message-Id: <20230212204942.1905959-3-marcandre.lureau@redhat.com> In-Reply-To: <20230212204942.1905959-1-marcandre.lureau@redhat.com> References: <20230212204942.1905959-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1676235092354100001 From: Marc-Andr=C3=A9 Lureau Because they are actually sockets... Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Thomas Huth --- io/channel-socket.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/io/channel-socket.c b/io/channel-socket.c index 7aca84f61a..2040297d2b 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -159,7 +159,7 @@ int qio_channel_socket_connect_sync(QIOChannelSocket *i= oc, =20 trace_qio_channel_socket_connect_complete(ioc, fd); if (qio_channel_socket_set_fd(ioc, fd, errp) < 0) { - close(fd); + closesocket(fd); return -1; } =20 @@ -233,7 +233,7 @@ int qio_channel_socket_listen_sync(QIOChannelSocket *io= c, =20 trace_qio_channel_socket_listen_complete(ioc, fd); if (qio_channel_socket_set_fd(ioc, fd, errp) < 0) { - close(fd); + closesocket(fd); return -1; } qio_channel_set_feature(QIO_CHANNEL(ioc), QIO_CHANNEL_FEATURE_LISTEN); @@ -310,7 +310,7 @@ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, =20 trace_qio_channel_socket_dgram_complete(ioc, fd); if (qio_channel_socket_set_fd(ioc, fd, errp) < 0) { - close(fd); + closesocket(fd); return -1; } =20 --=20 2.39.1 From nobody Sat May 18 14:54:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1676235093; cv=none; d=zohomail.com; s=zohoarc; b=mmkk3Va6ESQtdpoCqvulIUxf3dXqi5pALaRiKYZZ/rVUEReRShGj9zTVM5desTtCeT2w+S/ldtczy/zfyfd+OtwKJ0P3+kIFm2XtHh70d8KD0iVMuqpwiTdbt3w5M+PrL1qVB1QzeASPHeMUboSv9ZOdiXg2dhOkjv5Pvxv3WSU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676235093; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NfCpQ24VnaDsbMJsvnpcwQdy4D0AoKUoiSA/11MsIic=; b=DZM0+sOcNY/mcBRrBFKlanLvInr+FnM2M/qCDMsKSZUc/nvcILLz8cL0N5i5yIcQf0T3Bc7+WbDl+KvA7P+vQ3TZaxHyGQGskdK/xy+Vfco682XURL1Y4qFPq+Isi9yt06dgtB4GX7RJwwjTo4R25Rzj8tGIhlNoXbO8QvwJEgw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1676235092970881.7755685281544; Sun, 12 Feb 2023 12:51:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pRJJ2-0004zl-2L; Sun, 12 Feb 2023 15:50:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRJIX-0004W8-Qf for qemu-devel@nongnu.org; Sun, 12 Feb 2023 15:50:17 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRJIV-0002Av-1D for qemu-devel@nongnu.org; Sun, 12 Feb 2023 15:50:09 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-260-TmhRSAs8MhK_-rRmCus71Q-1; Sun, 12 Feb 2023 15:50:02 -0500 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 53EB885A588; Sun, 12 Feb 2023 20:50:00 +0000 (UTC) Received: from localhost (unknown [10.39.208.2]) by smtp.corp.redhat.com (Postfix) with ESMTP id 90121492B15; Sun, 12 Feb 2023 20:49:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1676235005; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NfCpQ24VnaDsbMJsvnpcwQdy4D0AoKUoiSA/11MsIic=; b=YVx7EftKi5EmoyW6YihMtNTpO9b9ofly14lSuZtWv4ez8fhV+s1gddWm9sD7fVKivkeNUh aJuzpSGy0ae4Wsaz1ZaNT0dXE7pHXZ7a7kbokmLyDRDtItrd8uTe3Y4h5s9fw0B6RCjFku hu1I8V15jpXAbX52KCVaOUGIdXm7t3U= X-MC-Unique: TmhRSAs8MhK_-rRmCus71Q-1 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefan Weil , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Joel Stanley , Laurent Vivier , Thomas Huth , Jason Wang , qemu-arm@nongnu.org, Stefan Berger , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH 3/4] win32: stop mixing SOCKET and file descriptor space Date: Mon, 13 Feb 2023 00:49:41 +0400 Message-Id: <20230212204942.1905959-4-marcandre.lureau@redhat.com> In-Reply-To: <20230212204942.1905959-1-marcandre.lureau@redhat.com> References: <20230212204942.1905959-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1676235094269100007 From: Marc-Andr=C3=A9 Lureau Until now, a win32 SOCKET handle is often cast to an int file descriptor, as this is what other OS use for sockets. When necessary, QEMU eventually queries whether it's a socket with the help of fd_is_socket(). However, there is no guarantee of conflict between the fd and SOCKET space. Such conflict would have surprising consequences, we shouldn't mix them. Also, it is often forgotten that SOCKET must be closed with closesocket(), and not close(). Instead, let's make the win32 socket wrapper functions return and take a file descriptor, and let util/ wrappers do the fd/SOCKET conversion as necessary. A bit of adaptation is necessary in io/ as well. Unfortunately, we can't drop closesocket() usage, despite _open_osfhandle() documentation claiming transfer of ownership, testing shows bad behaviour if you forget to call closesocket(). Signed-off-by: Marc-Andr=C3=A9 Lureau --- io/channel-socket.c | 18 +++-- io/channel-watch.c | 17 +++-- util/oslib-win32.c | 164 ++++++++++++++++++++++++++++++++++++++------ 3 files changed, 165 insertions(+), 34 deletions(-) diff --git a/io/channel-socket.c b/io/channel-socket.c index 2040297d2b..18cc062431 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -426,6 +426,14 @@ static void qio_channel_socket_init(Object *obj) ioc->fd =3D -1; } =20 +static void wsa_event_clear(int sockfd) +{ +#ifdef WIN32 + SOCKET s =3D _get_osfhandle(sockfd); + WSAEventSelect(s, NULL, 0); +#endif +} + static void qio_channel_socket_finalize(Object *obj) { QIOChannelSocket *ioc =3D QIO_CHANNEL_SOCKET(obj); @@ -441,9 +449,7 @@ static void qio_channel_socket_finalize(Object *obj) err =3D NULL; } } -#ifdef WIN32 - WSAEventSelect(ioc->fd, NULL, 0); -#endif + wsa_event_clear(ioc->fd); closesocket(ioc->fd); ioc->fd =3D -1; } @@ -845,9 +851,7 @@ qio_channel_socket_close(QIOChannel *ioc, Error *err =3D NULL; =20 if (sioc->fd !=3D -1) { -#ifdef WIN32 - WSAEventSelect(sioc->fd, NULL, 0); -#endif + wsa_event_clear(sioc->fd); if (qio_channel_has_feature(ioc, QIO_CHANNEL_FEATURE_LISTEN)) { socket_listen_cleanup(sioc->fd, errp); } @@ -899,7 +903,7 @@ static void qio_channel_socket_set_aio_fd_handler(QIOCh= annel *ioc, void *opaque) { QIOChannelSocket *sioc =3D QIO_CHANNEL_SOCKET(ioc); - aio_set_fd_handler(ctx, sioc->fd, false, + aio_set_fd_handler(ctx, _get_osfhandle(sioc->fd), false, io_read, io_write, NULL, NULL, opaque); } =20 diff --git a/io/channel-watch.c b/io/channel-watch.c index ad7c568a84..8c1c24008f 100644 --- a/io/channel-watch.c +++ b/io/channel-watch.c @@ -19,6 +19,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/error-report.h" #include "io/channel-watch.h" =20 typedef struct QIOChannelFDSource QIOChannelFDSource; @@ -275,15 +276,21 @@ GSource *qio_channel_create_fd_watch(QIOChannel *ioc, =20 #ifdef CONFIG_WIN32 GSource *qio_channel_create_socket_watch(QIOChannel *ioc, - int socket, + int sockfd, GIOCondition condition) { + SOCKET s =3D _get_osfhandle(sockfd); GSource *source; QIOChannelSocketSource *ssource; =20 - WSAEventSelect(socket, ioc->event, - FD_READ | FD_ACCEPT | FD_CLOSE | - FD_CONNECT | FD_WRITE | FD_OOB); + if (s =3D=3D -1 || + WSAEventSelect(s, ioc->event, + FD_READ | FD_ACCEPT | FD_CLOSE | + FD_CONNECT | FD_WRITE | FD_OOB) =3D=3D SOCKET_ERROR= ) { + g_autofree gchar *emsg =3D g_win32_error_message(GetLastError()); + error_printf("error creating socket watch: %s", emsg); + return NULL; + } =20 source =3D g_source_new(&qio_channel_socket_source_funcs, sizeof(QIOChannelSocketSource)); @@ -293,7 +300,7 @@ GSource *qio_channel_create_socket_watch(QIOChannel *io= c, object_ref(OBJECT(ioc)); =20 ssource->condition =3D condition; - ssource->socket =3D socket; + ssource->socket =3D s; ssource->revents =3D 0; =20 ssource->fd.fd =3D (gintptr)ioc->event; diff --git a/util/oslib-win32.c b/util/oslib-win32.c index 07ade41800..78fab521cf 100644 --- a/util/oslib-win32.c +++ b/util/oslib-win32.c @@ -180,7 +180,8 @@ static int socket_error(void) void qemu_socket_set_block(int fd) { unsigned long opt =3D 0; - WSAEventSelect(fd, NULL, 0); + SOCKET s =3D _get_osfhandle(fd); + WSAEventSelect(s, NULL, 0); ioctlsocket(fd, FIONBIO, &opt); } =20 @@ -297,7 +298,13 @@ int qemu_connect_wrap(int sockfd, const struct sockadd= r *addr, socklen_t addrlen) { int ret; - ret =3D connect(sockfd, addr, addrlen); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D connect(s, addr, addrlen); if (ret < 0) { if (WSAGetLastError() =3D=3D WSAEWOULDBLOCK) { errno =3D EINPROGRESS; @@ -313,7 +320,13 @@ int qemu_connect_wrap(int sockfd, const struct sockadd= r *addr, int qemu_listen_wrap(int sockfd, int backlog) { int ret; - ret =3D listen(sockfd, backlog); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D listen(s, backlog); if (ret < 0) { errno =3D socket_error(); } @@ -326,7 +339,13 @@ int qemu_bind_wrap(int sockfd, const struct sockaddr *= addr, socklen_t addrlen) { int ret; - ret =3D bind(sockfd, addr, addrlen); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D bind(s, addr, addrlen); if (ret < 0) { errno =3D socket_error(); } @@ -337,12 +356,22 @@ int qemu_bind_wrap(int sockfd, const struct sockaddr = *addr, #undef socket int qemu_socket_wrap(int domain, int type, int protocol) { - int ret; - ret =3D socket(domain, type, protocol); - if (ret < 0) { + SOCKET s; + int fd; + + s =3D socket(domain, type, protocol); + if (s =3D=3D -1) { errno =3D socket_error(); + return -1; } - return ret; + + fd =3D _open_osfhandle(s, _O_BINARY); + if (fd < 0) { + closesocket(s); + errno =3D ENOMEM; + } + + return fd; } =20 =20 @@ -350,10 +379,22 @@ int qemu_socket_wrap(int domain, int type, int protoc= ol) int qemu_accept_wrap(int sockfd, struct sockaddr *addr, socklen_t *addrlen) { - int ret; - ret =3D accept(sockfd, addr, addrlen); - if (ret < 0) { + int ret =3D -1; + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + s =3D accept(s, addr, addrlen); + if (s =3D=3D -1) { errno =3D socket_error(); + } else { + ret =3D _open_osfhandle(s, _O_BINARY); + if (ret < 0) { + closesocket(s); + errno =3D ENOMEM; + } } return ret; } @@ -363,7 +404,13 @@ int qemu_accept_wrap(int sockfd, struct sockaddr *addr, int qemu_shutdown_wrap(int sockfd, int how) { int ret; - ret =3D shutdown(sockfd, how); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D shutdown(s, how); if (ret < 0) { errno =3D socket_error(); } @@ -375,7 +422,13 @@ int qemu_shutdown_wrap(int sockfd, int how) int qemu_ioctlsocket_wrap(int fd, int req, void *val) { int ret; - ret =3D ioctlsocket(fd, req, val); + SOCKET s =3D _get_osfhandle(fd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D ioctlsocket(s, req, val); if (ret < 0) { errno =3D socket_error(); } @@ -387,10 +440,28 @@ int qemu_ioctlsocket_wrap(int fd, int req, void *val) int qemu_closesocket_wrap(int fd) { int ret; - ret =3D closesocket(fd); + SOCKET s =3D _get_osfhandle(fd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + + /* + * close() must be called before closesocket(), otherwise close() retu= rns an + * error and sets EBADF. + */ + ret =3D close(fd); + if (ret < 0) { + return ret; + } + + /* closesocket() is required, event after close()! */ + ret =3D closesocket(s); if (ret < 0) { errno =3D socket_error(); } + return ret; } =20 @@ -400,7 +471,14 @@ int qemu_getsockopt_wrap(int sockfd, int level, int op= tname, void *optval, socklen_t *optlen) { int ret; - ret =3D getsockopt(sockfd, level, optname, optval, optlen); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + + ret =3D getsockopt(s, level, optname, optval, optlen); if (ret < 0) { errno =3D socket_error(); } @@ -413,7 +491,13 @@ int qemu_setsockopt_wrap(int sockfd, int level, int op= tname, const void *optval, socklen_t optlen) { int ret; - ret =3D setsockopt(sockfd, level, optname, optval, optlen); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D setsockopt(s, level, optname, optval, optlen); if (ret < 0) { errno =3D socket_error(); } @@ -426,7 +510,13 @@ int qemu_getpeername_wrap(int sockfd, struct sockaddr = *addr, socklen_t *addrlen) { int ret; - ret =3D getpeername(sockfd, addr, addrlen); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D getpeername(s, addr, addrlen); if (ret < 0) { errno =3D socket_error(); } @@ -439,7 +529,13 @@ int qemu_getsockname_wrap(int sockfd, struct sockaddr = *addr, socklen_t *addrlen) { int ret; - ret =3D getsockname(sockfd, addr, addrlen); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D getsockname(s, addr, addrlen); if (ret < 0) { errno =3D socket_error(); } @@ -451,7 +547,13 @@ int qemu_getsockname_wrap(int sockfd, struct sockaddr = *addr, ssize_t qemu_send_wrap(int sockfd, const void *buf, size_t len, int flags) { int ret; - ret =3D send(sockfd, buf, len, flags); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D send(s, buf, len, flags); if (ret < 0) { errno =3D socket_error(); } @@ -464,7 +566,13 @@ ssize_t qemu_sendto_wrap(int sockfd, const void *buf, = size_t len, int flags, const struct sockaddr *addr, socklen_t addrlen) { int ret; - ret =3D sendto(sockfd, buf, len, flags, addr, addrlen); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D sendto(s, buf, len, flags, addr, addrlen); if (ret < 0) { errno =3D socket_error(); } @@ -476,7 +584,13 @@ ssize_t qemu_sendto_wrap(int sockfd, const void *buf, = size_t len, int flags, ssize_t qemu_recv_wrap(int sockfd, void *buf, size_t len, int flags) { int ret; - ret =3D recv(sockfd, buf, len, flags); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D recv(s, buf, len, flags); if (ret < 0) { errno =3D socket_error(); } @@ -489,7 +603,13 @@ ssize_t qemu_recvfrom_wrap(int sockfd, void *buf, size= _t len, int flags, struct sockaddr *addr, socklen_t *addrlen) { int ret; - ret =3D recvfrom(sockfd, buf, len, flags, addr, addrlen); + SOCKET s =3D _get_osfhandle(sockfd); + + if (s =3D=3D -1) { + errno =3D EINVAL; + return -1; + } + ret =3D recvfrom(s, buf, len, flags, addr, addrlen); if (ret < 0) { errno =3D socket_error(); } --=20 2.39.1 From nobody Sat May 18 14:54:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1676235055; cv=none; d=zohomail.com; s=zohoarc; b=YHpP66eU8sSfoKeHS03EYPEK1LbT3ax1O4dpdQXCJoi/cXr4Bk5J4IeoP3dyojk/9lLo+roSgxGU44i514WXCjp9ZHiQmR4uX0UYqr6vPHQ1S0CPOfqe1ijgaPXhVhQxhOvAcUmfl/cL3qkDBJLfqZvVmrziBihmOzNaxSdu4gU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676235055; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MlVbdDg58wCfU7EMcYRxy3yVsevXRSn0md6UlpbUgtI=; b=lnS0nmYDzPSb1ia1NnpydYKfEiLXHd8xj4Y/61ChjEInaOF7E4/g8OE+0Gnx0S3mueTluWoSmYUbyhzIo5Tt8F7lZRIA6rF6TLvmBwo+mtVBJgYUwlWW/gYQvHW0isO3IauTWTUAOUzmeCZU+zQw+Zja2ZcCO+TCQHaWrUQYN4Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1676235055159491.050557493968; Sun, 12 Feb 2023 12:50:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pRJIr-0004kB-42; Sun, 12 Feb 2023 15:50:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRJIb-0004WU-6o for qemu-devel@nongnu.org; Sun, 12 Feb 2023 15:50:19 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRJIY-0002Er-RQ for qemu-devel@nongnu.org; Sun, 12 Feb 2023 15:50:12 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-434-Zr_JqcRANZe3_a9bG7KEAg-1; Sun, 12 Feb 2023 15:50:06 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B9D0D811E6E; Sun, 12 Feb 2023 20:50:04 +0000 (UTC) Received: from localhost (unknown [10.39.208.2]) by smtp.corp.redhat.com (Postfix) with ESMTP id 09CE02026D4B; Sun, 12 Feb 2023 20:50:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1676235010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MlVbdDg58wCfU7EMcYRxy3yVsevXRSn0md6UlpbUgtI=; b=LyGYz1uETdMgV7pWugAIY5bYRxT3Oj24I8tIpfLtZ2Yb8K6+js354vTqYZqlFoveHMG524 XbL0jZrCAzcmbBKkZkjiZ7xMK/HukjP6Yg0fEy5JXYCRiQdVDEUglN78W8NrVzDrrtZZ1T 6wE198NqwmZ/kvU2bt1XeaAz1eV4C2w= X-MC-Unique: Zr_JqcRANZe3_a9bG7KEAg-1 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefan Weil , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Joel Stanley , Laurent Vivier , Thomas Huth , Jason Wang , qemu-arm@nongnu.org, Stefan Berger , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH 4/4] win32: replace closesocket() with close() wrapper Date: Mon, 13 Feb 2023 00:49:42 +0400 Message-Id: <20230212204942.1905959-5-marcandre.lureau@redhat.com> In-Reply-To: <20230212204942.1905959-1-marcandre.lureau@redhat.com> References: <20230212204942.1905959-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1676235056561100003 From: Marc-Andr=C3=A9 Lureau Use a close() wrapper instead, so that we don't need to worry about closesocket() vs close() anymore, let's hope. Signed-off-by: Marc-Andr=C3=A9 Lureau --- include/sysemu/os-posix.h | 1 - include/sysemu/os-win32.h | 8 ++++---- backends/tpm/tpm_emulator.c | 6 +++--- crypto/afalg.c | 6 +++--- hw/hyperv/syndbg.c | 4 ++-- io/channel-socket.c | 10 +++++----- net/dgram.c | 14 +++++++------- net/socket.c | 22 +++++++++++----------- tests/qtest/libqtest.c | 8 ++++---- tests/qtest/microbit-test.c | 2 +- tests/qtest/netdev-socket.c | 10 +++++----- tests/unit/socket-helpers.c | 8 ++++---- util/oslib-win32.c | 21 ++++++++++----------- util/qemu-sockets.c | 22 +++++++++++----------- 14 files changed, 70 insertions(+), 72 deletions(-) diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h index 58de7c994d..4c29b72941 100644 --- a/include/sysemu/os-posix.h +++ b/include/sysemu/os-posix.h @@ -51,7 +51,6 @@ void os_daemonize(void); void os_setup_post(void); int os_mlock(void); =20 -#define closesocket(s) close(s) #define ioctlsocket(s, r, v) ioctl(s, r, v) =20 int os_set_daemonize(bool d); diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h index 5b38c7bd04..c5008538ec 100644 --- a/include/sysemu/os-win32.h +++ b/include/sysemu/os-win32.h @@ -148,6 +148,10 @@ static inline void qemu_funlockfile(FILE *f) * set errno based on WSAGetLastError() */ =20 +#undef close +#define close qemu_close_wrap +int qemu_close_wrap(int fd); + #undef connect #define connect qemu_connect_wrap int qemu_connect_wrap(int sockfd, const struct sockaddr *addr, @@ -179,10 +183,6 @@ int qemu_shutdown_wrap(int sockfd, int how); #define ioctlsocket qemu_ioctlsocket_wrap int qemu_ioctlsocket_wrap(int fd, int req, void *val); =20 -#undef closesocket -#define closesocket qemu_closesocket_wrap -int qemu_closesocket_wrap(int fd); - #undef getsockopt #define getsockopt qemu_getsockopt_wrap int qemu_getsockopt_wrap(int sockfd, int level, int optname, diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c index 67e7b212e3..0695febb35 100644 --- a/backends/tpm/tpm_emulator.c +++ b/backends/tpm/tpm_emulator.c @@ -574,13 +574,13 @@ static int tpm_emulator_prepare_data_fd(TPMEmulator *= tpm_emu) goto err_exit; } =20 - closesocket(fds[1]); + close(fds[1]); =20 return 0; =20 err_exit: - closesocket(fds[0]); - closesocket(fds[1]); + close(fds[0]); + close(fds[1]); return -1; } =20 diff --git a/crypto/afalg.c b/crypto/afalg.c index 10046bb0ae..348301e703 100644 --- a/crypto/afalg.c +++ b/crypto/afalg.c @@ -59,7 +59,7 @@ qcrypto_afalg_socket_bind(const char *type, const char *n= ame, =20 if (bind(sbind, (const struct sockaddr *)&salg, sizeof(salg)) !=3D 0) { error_setg_errno(errp, errno, "Failed to bind socket"); - closesocket(sbind); + close(sbind); return -1; } =20 @@ -105,11 +105,11 @@ void qcrypto_afalg_comm_free(QCryptoAFAlg *afalg) } =20 if (afalg->tfmfd !=3D -1) { - closesocket(afalg->tfmfd); + close(afalg->tfmfd); } =20 if (afalg->opfd !=3D -1) { - closesocket(afalg->opfd); + close(afalg->opfd); } =20 g_free(afalg); diff --git a/hw/hyperv/syndbg.c b/hw/hyperv/syndbg.c index 16d04cfdc6..4d5ac71f03 100644 --- a/hw/hyperv/syndbg.c +++ b/hw/hyperv/syndbg.c @@ -340,7 +340,7 @@ static void hv_syndbg_realize(DeviceState *dev, Error *= *errp) syndbg->servaddr.sin_family =3D AF_INET; if (connect(syndbg->socket, (struct sockaddr *)&syndbg->servaddr, sizeof(syndbg->servaddr)) < 0) { - closesocket(syndbg->socket); + close(syndbg->socket); error_setg(errp, "%s failed to connect to socket", TYPE_HV_SYNDBG); return; } @@ -357,7 +357,7 @@ static void hv_syndbg_unrealize(DeviceState *dev) =20 if (syndbg->socket > 0) { qemu_set_fd_handler(syndbg->socket, NULL, NULL, NULL); - closesocket(syndbg->socket); + close(syndbg->socket); } } =20 diff --git a/io/channel-socket.c b/io/channel-socket.c index 18cc062431..db5f25d780 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -159,7 +159,7 @@ int qio_channel_socket_connect_sync(QIOChannelSocket *i= oc, =20 trace_qio_channel_socket_connect_complete(ioc, fd); if (qio_channel_socket_set_fd(ioc, fd, errp) < 0) { - closesocket(fd); + close(fd); return -1; } =20 @@ -233,7 +233,7 @@ int qio_channel_socket_listen_sync(QIOChannelSocket *io= c, =20 trace_qio_channel_socket_listen_complete(ioc, fd); if (qio_channel_socket_set_fd(ioc, fd, errp) < 0) { - closesocket(fd); + close(fd); return -1; } qio_channel_set_feature(QIO_CHANNEL(ioc), QIO_CHANNEL_FEATURE_LISTEN); @@ -310,7 +310,7 @@ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, =20 trace_qio_channel_socket_dgram_complete(ioc, fd); if (qio_channel_socket_set_fd(ioc, fd, errp) < 0) { - closesocket(fd); + close(fd); return -1; } =20 @@ -450,7 +450,7 @@ static void qio_channel_socket_finalize(Object *obj) } } wsa_event_clear(ioc->fd); - closesocket(ioc->fd); + close(ioc->fd); ioc->fd =3D -1; } } @@ -856,7 +856,7 @@ qio_channel_socket_close(QIOChannel *ioc, socket_listen_cleanup(sioc->fd, errp); } =20 - if (closesocket(sioc->fd) < 0) { + if (close(sioc->fd) < 0) { sioc->fd =3D -1; error_setg_errno(&err, errno, "Unable to close socket"); error_propagate(errp, err); diff --git a/net/dgram.c b/net/dgram.c index 9f7bf38376..48f653bceb 100644 --- a/net/dgram.c +++ b/net/dgram.c @@ -230,7 +230,7 @@ static int net_dgram_mcast_create(struct sockaddr_in *m= castaddr, return fd; fail: if (fd >=3D 0) { - closesocket(fd); + close(fd); } return -1; } @@ -352,7 +352,7 @@ static int net_dgram_mcast_init(NetClientState *peer, if (convert_host_port(saddr, local->u.inet.host, local->u.inet= .port, errp) < 0) { g_free(saddr); - closesocket(fd); + close(fd); return -1; } =20 @@ -360,14 +360,14 @@ static int net_dgram_mcast_init(NetClientState *peer, if (saddr->sin_addr.s_addr =3D=3D 0) { error_setg(errp, "can't setup multicast destination addres= s"); g_free(saddr); - closesocket(fd); + close(fd); return -1; } /* clone dgram socket */ newfd =3D net_dgram_mcast_create(saddr, NULL, errp); if (newfd < 0) { g_free(saddr); - closesocket(fd); + close(fd); return -1; } /* clone newfd to fd, close newfd */ @@ -494,14 +494,14 @@ int net_init_dgram(const Netdev *netdev, const char *= name, if (ret < 0) { error_setg_errno(errp, errno, "can't set socket option SO_REUSEADDR"); - closesocket(fd); + close(fd); return -1; } ret =3D bind(fd, (struct sockaddr *)&laddr_in, sizeof(laddr_in)); if (ret < 0) { error_setg_errno(errp, errno, "can't bind ip=3D%s to socket", inet_ntoa(laddr_in.sin_addr)); - closesocket(fd); + close(fd); return -1; } qemu_socket_set_nonblock(fd); @@ -548,7 +548,7 @@ int net_init_dgram(const Netdev *netdev, const char *na= me, if (ret < 0) { error_setg_errno(errp, errno, "can't bind unix=3D%s to socket", laddr_un.sun_path); - closesocket(fd); + close(fd); return -1; } qemu_socket_set_nonblock(fd); diff --git a/net/socket.c b/net/socket.c index 2fc5696755..ba6e5b0b00 100644 --- a/net/socket.c +++ b/net/socket.c @@ -172,7 +172,7 @@ static void net_socket_send(void *opaque) if (s->listen_fd !=3D -1) { qemu_set_fd_handler(s->listen_fd, net_socket_accept, NULL, s); } - closesocket(s->fd); + close(s->fd); =20 s->fd =3D -1; net_socket_rs_init(&s->rs, net_socket_rs_finalize, false); @@ -299,7 +299,7 @@ static int net_socket_mcast_create(struct sockaddr_in *= mcastaddr, return fd; fail: if (fd >=3D 0) - closesocket(fd); + close(fd); return -1; } =20 @@ -314,7 +314,7 @@ static void net_socket_cleanup(NetClientState *nc) } if (s->listen_fd !=3D -1) { qemu_set_fd_handler(s->listen_fd, NULL, NULL, NULL); - closesocket(s->listen_fd); + close(s->listen_fd); s->listen_fd =3D -1; } } @@ -399,7 +399,7 @@ static NetSocketState *net_socket_fd_init_dgram(NetClie= ntState *peer, return s; =20 err: - closesocket(fd); + close(fd); return NULL; } =20 @@ -456,7 +456,7 @@ static NetSocketState *net_socket_fd_init(NetClientStat= e *peer, if(getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&so_type, (socklen_t *)&optlen)< 0) { error_setg(errp, "can't get socket option SO_TYPE"); - closesocket(fd); + close(fd); return NULL; } switch(so_type) { @@ -468,7 +468,7 @@ static NetSocketState *net_socket_fd_init(NetClientStat= e *peer, default: error_setg(errp, "socket type=3D%d for fd=3D%d must be either" " SOCK_DGRAM or SOCK_STREAM", so_type, fd); - closesocket(fd); + close(fd); } return NULL; } @@ -526,13 +526,13 @@ static int net_socket_listen_init(NetClientState *pee= r, if (ret < 0) { error_setg_errno(errp, errno, "can't bind ip=3D%s to socket", inet_ntoa(saddr.sin_addr)); - closesocket(fd); + close(fd); return -1; } ret =3D listen(fd, 0); if (ret < 0) { error_setg_errno(errp, errno, "can't listen on socket"); - closesocket(fd); + close(fd); return -1; } =20 @@ -579,7 +579,7 @@ static int net_socket_connect_init(NetClientState *peer, break; } else { error_setg_errno(errp, errno, "can't connect socket"); - closesocket(fd); + close(fd); return -1; } } else { @@ -671,14 +671,14 @@ static int net_socket_udp_init(NetClientState *peer, if (ret < 0) { error_setg_errno(errp, errno, "can't set socket option SO_REUSEADDR"); - closesocket(fd); + close(fd); return -1; } ret =3D bind(fd, (struct sockaddr *)&laddr, sizeof(laddr)); if (ret < 0) { error_setg_errno(errp, errno, "can't bind ip=3D%s to socket", inet_ntoa(laddr.sin_addr)); - closesocket(fd); + close(fd); return -1; } qemu_socket_set_nonblock(fd); diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index d658222a19..983ae18ca5 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -124,7 +124,7 @@ static int socket_accept(int sock) (void *)&timeout, sizeof(timeout))) { fprintf(stderr, "%s failed to set SO_RCVTIMEO: %s\n", __func__, strerror(errno)); - closesocket(sock); + close(sock); return -1; } =20 @@ -135,7 +135,7 @@ static int socket_accept(int sock) if (ret =3D=3D -1) { fprintf(stderr, "%s failed: %s\n", __func__, strerror(errno)); } - closesocket(sock); + close(sock); =20 return ret; } @@ -546,8 +546,8 @@ void qtest_quit(QTestState *s) qtest_remove_abrt_handler(s); =20 qtest_kill_qemu(s); - closesocket(s->fd); - closesocket(s->qmp_fd); + close(s->fd); + close(s->qmp_fd); g_string_free(s->rx, true); =20 for (GList *it =3D s->pending_events; it !=3D NULL; it =3D it->next) { diff --git a/tests/qtest/microbit-test.c b/tests/qtest/microbit-test.c index 4bc267020b..6022a92b6a 100644 --- a/tests/qtest/microbit-test.c +++ b/tests/qtest/microbit-test.c @@ -107,7 +107,7 @@ static void test_nrf51_uart(void) g_assert_true(recv(sock_fd, s, 10, 0) =3D=3D 5); g_assert_true(memcmp(s, "world", 5) =3D=3D 0); =20 - closesocket(sock_fd); + close(sock_fd); =20 qtest_quit(qts); } diff --git a/tests/qtest/netdev-socket.c b/tests/qtest/netdev-socket.c index 6ba256e173..9b5c52a272 100644 --- a/tests/qtest/netdev-socket.c +++ b/tests/qtest/netdev-socket.c @@ -95,7 +95,7 @@ static int inet_get_free_port_multiple(int nb, int *port,= bool ipv6) =20 nb =3D i; for (i =3D 0; i < nb; i++) { - closesocket(sock[i]); + close(sock[i]); } =20 return nb; @@ -262,8 +262,8 @@ static void test_stream_fd(void) qtest_quit(qts1); qtest_quit(qts0); =20 - closesocket(sock[0]); - closesocket(sock[1]); + close(sock[0]); + close(sock[1]); } #endif =20 @@ -388,8 +388,8 @@ static void test_dgram_fd(void) qtest_quit(qts1); qtest_quit(qts0); =20 - closesocket(sv[0]); - closesocket(sv[1]); + close(sv[0]); + close(sv[1]); } #endif =20 diff --git a/tests/unit/socket-helpers.c b/tests/unit/socket-helpers.c index 914b3aa0cf..6de27baee2 100644 --- a/tests/unit/socket-helpers.c +++ b/tests/unit/socket-helpers.c @@ -117,13 +117,13 @@ static int socket_can_bind_connect(const char *hostna= me, int family) =20 cleanup: if (afd !=3D -1) { - closesocket(afd); + close(afd); } if (cfd !=3D -1) { - closesocket(cfd); + close(cfd); } if (lfd !=3D -1) { - closesocket(lfd); + close(lfd); } if (res) { freeaddrinfo(res); @@ -160,7 +160,7 @@ void socket_check_afunix_support(bool *has_afunix) int fd; =20 fd =3D socket(PF_UNIX, SOCK_STREAM, 0); - closesocket(fd); + close(fd); =20 #ifdef _WIN32 *has_afunix =3D (fd !=3D (int)INVALID_SOCKET); diff --git a/util/oslib-win32.c b/util/oslib-win32.c index 78fab521cf..a99f38e7ff 100644 --- a/util/oslib-win32.c +++ b/util/oslib-win32.c @@ -436,17 +436,15 @@ int qemu_ioctlsocket_wrap(int fd, int req, void *val) } =20 =20 -#undef closesocket -int qemu_closesocket_wrap(int fd) +#undef close +int qemu_close_wrap(int fd) { + SOCKET s =3D INVALID_SOCKET; int ret; - SOCKET s =3D _get_osfhandle(fd); =20 - if (s =3D=3D -1) { - errno =3D EINVAL; - return -1; + if (fd_is_socket(fd)) { + s =3D _get_osfhandle(fd); } - /* * close() must be called before closesocket(), otherwise close() retu= rns an * error and sets EBADF. @@ -456,10 +454,11 @@ int qemu_closesocket_wrap(int fd) return ret; } =20 - /* closesocket() is required, event after close()! */ - ret =3D closesocket(s); - if (ret < 0) { - errno =3D socket_error(); + if (s !=3D INVALID_SOCKET) { + ret =3D closesocket(s); + if (ret < 0) { + errno =3D socket_error(); + } } =20 return ret; diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 6538859b87..c06a4dce77 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -326,7 +326,7 @@ static int inet_listen_saddr(InetSocketAddress *saddr, * recover from this situation, so we need to recreate the * socket to allow bind attempts for subsequent ports: */ - closesocket(slisten); + close(slisten); slisten =3D -1; } } @@ -337,7 +337,7 @@ static int inet_listen_saddr(InetSocketAddress *saddr, listen_failed: saved_errno =3D errno; if (slisten >=3D 0) { - closesocket(slisten); + close(slisten); } freeaddrinfo(res); errno =3D saved_errno; @@ -380,7 +380,7 @@ static int inet_connect_addr(const InetSocketAddress *s= addr, if (rc < 0) { error_setg_errno(errp, errno, "Failed to connect to '%s:%s'", saddr->host, saddr->port); - closesocket(sock); + close(sock); return -1; } =20 @@ -483,7 +483,7 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error = **errp) =20 if (ret < 0) { error_setg_errno(errp, errno, "Unable to set KEEPALIVE"); - closesocket(sock); + close(sock); return -1; } } @@ -580,7 +580,7 @@ static int inet_dgram_saddr(InetSocketAddress *sraddr, =20 err: if (sock !=3D -1) { - closesocket(sock); + close(sock); } if (local) { freeaddrinfo(local); @@ -777,7 +777,7 @@ static int vsock_connect_addr(const VsockSocketAddress = *vaddr, if (rc < 0) { error_setg_errno(errp, errno, "Failed to connect to '%s:%s'", vaddr->cid, vaddr->port); - closesocket(sock); + close(sock); return -1; } =20 @@ -814,13 +814,13 @@ static int vsock_listen_saddr(VsockSocketAddress *vad= dr, =20 if (bind(slisten, (const struct sockaddr *)&svm, sizeof(svm)) !=3D 0) { error_setg_errno(errp, errno, "Failed to bind socket"); - closesocket(slisten); + close(slisten); return -1; } =20 if (listen(slisten, num) !=3D 0) { error_setg_errno(errp, errno, "Failed to listen on socket"); - closesocket(slisten); + close(slisten); return -1; } return slisten; @@ -978,7 +978,7 @@ static int unix_listen_saddr(UnixSocketAddress *saddr, =20 err: g_free(pathbuf); - closesocket(sock); + close(sock); return -1; } =20 @@ -1041,7 +1041,7 @@ static int unix_connect_saddr(UnixSocketAddress *sadd= r, Error **errp) return sock; =20 err: - closesocket(sock); + close(sock); return -1; } =20 @@ -1238,7 +1238,7 @@ int socket_listen(SocketAddress *addr, int num, Error= **errp) */ if (listen(fd, num) !=3D 0) { error_setg_errno(errp, errno, "Failed to listen on fd socket"); - closesocket(fd); + close(fd); return -1; } break; --=20 2.39.1