Message ID | 20230220214859.3792171-1-marcandre.lureau@redhat.com |
---|---|
Headers | show
Return-Path: <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org> X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=<UNKNOWN>) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=XTvFSSi7; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PLGMv611lz23j7 for <incoming@patchwork.ozlabs.org>; Tue, 21 Feb 2023 08:51:39 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1pUE25-0003Ns-3A; Mon, 20 Feb 2023 16:49:13 -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 <marcandre.lureau@redhat.com>) id 1pUE22-0003NG-Dx for qemu-devel@nongnu.org; Mon, 20 Feb 2023 16:49:10 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>) id 1pUE20-0007v9-De for qemu-devel@nongnu.org; Mon, 20 Feb 2023 16:49:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1676929746; 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; bh=8XBtvi3wPEbn04OfSm75RT2PhGLFcN17qJlhJD1pomg=; b=XTvFSSi7vtP4yDmuJV+aNGyOz0HJkYQKkweBrkjFGiNhARMX3AMy7besPOvN35HKJtxN0U yhtumkO5AsCKawlQFvW0AOp4TuRpLymwAMKogrgCqIsVQ/iynV8OtSWwKO2qjT3ZDRes1O f4JTJ/6lqCkkBYKy2cne3eaGDimxEm0= 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-625-erBcdkLyPaignqBUXDOQ2Q-1; Mon, 20 Feb 2023 16:49:04 -0500 X-MC-Unique: erBcdkLyPaignqBUXDOQ2Q-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B02B42A5956F; Mon, 20 Feb 2023 21:49:03 +0000 (UTC) Received: from localhost (unknown [10.39.208.3]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7C87040B40D7; Mon, 20 Feb 2023 21:49:02 +0000 (UTC) From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: Michael Roth <michael.roth@amd.com>, =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>, Joel Stanley <joel@jms.id.au>, Jason Wang <jasowang@redhat.com>, qemu-block@nongnu.org, Markus Armbruster <armbru@redhat.com>, Thomas Huth <thuth@redhat.com>, qemu-arm@nongnu.org, Stefan Berger <stefanb@linux.vnet.ibm.com>, Laurent Vivier <lvivier@redhat.com>, Samuel Thibault <samuel.thibault@ens-lyon.org>, Stefan Weil <sw@weilnetz.de>, Fam Zheng <fam@euphon.net>, Paolo Bonzini <pbonzini@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Peter Maydell <peter.maydell@linaro.org>, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com> Subject: [PATCH v2 00/15] win32: do not mix SOCKET and fd space Date: Tue, 21 Feb 2023 01:48:44 +0400 Message-Id: <20230220214859.3792171-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.1 Received-SPF: pass client-ip=170.10.129.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: <qemu-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org |
Series |
win32: do not mix SOCKET and fd space
|
expand
|
From: Marc-André Lureau <marcandre.lureau@redhat.com> Hi, 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 can fix this by using FDs only. After fixing a few missed closesocket(), this patch series makes the win32 socket API wrappers take FDs. It finally get rid of closesocket() usage by using a close() wrapper instead. (note that fdopen/fclose would not be enough either to close the underlying socket appropriately) v2: - add clean up patch "util: drop qemu_fork()" - add a "&error_warn", to help with basic error reporting - fix errno handling after _get_osfhandle() - introduce qemu_socket_(un)select() helpers - add patch "aio_set_fd_handler() only supports SOCKET" - add meson slirp.wrap RFC - various misc cleanups - add r-b tags Marc-André Lureau (15): util: drop qemu_fork() tests: use closesocket() io: use closesocket() error: add global &error_warn destination win32/socket: introduce qemu_socket_select() helper win32/socket: introduce qemu_socket_unselect() helper aio: make aio_set_fd_poll() static to aio-posix.c aio/win32: aio_set_fd_handler() only supports SOCKET RFC: build-sys: add slirp.wrap main-loop: remove qemu_fd_register(), win32/slirp/socket specific slirp: unregister the win32 SOCKET slirp: open-code qemu_socket_(un)select() win32: avoid mixing SOCKET and file descriptor space os-posix: remove useless ioctlsocket() define win32: replace closesocket() with close() wrapper include/block/aio.h | 8 -- include/qapi/error.h | 6 ++ include/qemu/main-loop.h | 2 - include/qemu/osdep.h | 14 --- include/sysemu/os-posix.h | 3 - include/sysemu/os-win32.h | 15 ++- backends/tpm/tpm_emulator.c | 6 +- crypto/afalg.c | 6 +- hw/hyperv/syndbg.c | 4 +- io/channel-socket.c | 8 +- io/channel-watch.c | 10 +- net/dgram.c | 14 +-- net/slirp.c | 16 ++- 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 | 2 +- util/aio-posix.c | 6 +- util/aio-win32.c | 23 ++-- util/error.c | 10 +- util/main-loop.c | 11 -- util/oslib-posix.c | 70 ------------- util/oslib-win32.c | 202 ++++++++++++++++++++++++++++++------ util/qemu-sockets.c | 22 ++-- .gitignore | 2 + subprojects/slirp.wrap | 6 ++ 27 files changed, 289 insertions(+), 219 deletions(-) create mode 100644 subprojects/slirp.wrap