All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/15] win32: do not mix SOCKET and fd space
@ 2023-02-20 21:48 marcandre.lureau
  2023-02-20 21:48 ` [PATCH v2 01/15] util: drop qemu_fork() marcandre.lureau
                   ` (14 more replies)
  0 siblings, 15 replies; 18+ messages in thread
From: marcandre.lureau @ 2023-02-20 21:48 UTC (permalink / raw)
  To: qemu-devel
  Cc: Michael Roth, Daniel P. Berrangé, Joel Stanley, Jason Wang,
	qemu-block, Markus Armbruster, Thomas Huth, qemu-arm,
	Stefan Berger, Laurent Vivier, Samuel Thibault, Stefan Weil,
	Fam Zheng, Paolo Bonzini, Kevin Wolf, Hanna Reitz,
	Stefan Hajnoczi, Peter Maydell, Marc-André Lureau

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

-- 
2.39.1


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2023-02-21 10:28 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-20 21:48 [PATCH v2 00/15] win32: do not mix SOCKET and fd space marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 01/15] util: drop qemu_fork() marcandre.lureau
2023-02-21 10:21   ` Daniel P. Berrangé
2023-02-20 21:48 ` [PATCH v2 02/15] tests: use closesocket() marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 03/15] io: " marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 04/15] error: add global &error_warn destination marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 05/15] win32/socket: introduce qemu_socket_select() helper marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 06/15] win32/socket: introduce qemu_socket_unselect() helper marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 07/15] aio: make aio_set_fd_poll() static to aio-posix.c marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 08/15] aio/win32: aio_set_fd_handler() only supports SOCKET marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 09/15] RFC: build-sys: add slirp.wrap marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 10/15] main-loop: remove qemu_fd_register(), win32/slirp/socket specific marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 11/15] slirp: unregister the win32 SOCKET marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 12/15] slirp: open-code qemu_socket_(un)select() marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 13/15] win32: avoid mixing SOCKET and file descriptor space marcandre.lureau
2023-02-20 21:48 ` [PATCH v2 14/15] os-posix: remove useless ioctlsocket() define marcandre.lureau
2023-02-21 10:28   ` Daniel P. Berrangé
2023-02-20 21:48 ` [PATCH v2 15/15] win32: replace closesocket() with close() wrapper marcandre.lureau

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.