[PATCH 0/9] Fix sock_send reordering issue (#52401)
Jinoh Kang
jinoh.kang.kr at gmail.com
Mon Feb 21 04:47:45 CST 2022
This fixes the send part of the issue #52401 [1]: "Improper
synchronization in sock_recv/sock_send leads to arbitrary reordering of
completion of I/O requests", which was initially reported (outside
Bugzilla) by Dongwan Kim [2].
[1] https://bugs.winehq.org/show_bug.cgi?id=52401
[2] https://www.winehq.org/pipermail/wine-devel/2021-May/186454.html
Jinoh Kang (9):
server: Actually set initial status in set_async_direct_result
handler.
server: Add async_initial_status_callback.
server: Defer postprocessing until after setting initial status in
recv_socket handler.
server: Defer postprocessing until after setting initial status in
send_socket handler.
server: Compact struct set_async_direct_result_reply.
server: Add mark_pending field to set_async_direct_result request.
server: Attempt to complete I/O request immediately in send_socket.
ntdll: Don't call try_send before server call in sock_send.
server: Replace redundant send_socket status fields with force_async
boolean field.
dlls/ntdll/unix/socket.c | 84 +++++++++++++++++--------
dlls/ntdll/unix/sync.c | 9 +--
dlls/ntdll/unix/unix_private.h | 2 +-
dlls/ws2_32/tests/sock.c | 14 ++---
server/async.c | 44 ++++++++++---
server/file.h | 2 +
server/protocol.def | 7 ++-
server/sock.c | 112 +++++++++++++++++++--------------
8 files changed, 179 insertions(+), 95 deletions(-)
--
2.34.1
More information about the wine-devel
mailing list