Updated ntoskrnl-safedisc-2 patchset

Fix kernel32 pipe tests and crash in GTAV launcher.
This commit is contained in:
Paul Gofman 2019-12-19 12:33:25 +03:00
parent 108662b1cc
commit c8e3795e69
2 changed files with 1 additions and 60 deletions

View File

@ -1,56 +0,0 @@
From d60f2de8b419618674457e5539b081421c110f1e Mon Sep 17 00:00:00 2001
From: Chip Davis <cdavis@codeweavers.com>
Date: Sat, 14 Dec 2019 01:58:26 -0600
Subject: [PATCH 4/4] server: Return the driver's 'Information' from ioctl.
This actually shouldn't matter for driver modules, since those always
call out to another process, but it seems more correct.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
---
dlls/ntdll/file.c | 2 +-
server/fd.c | 2 +-
server/protocol.def | 1 +
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 26acc066cd..087a92cda2 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -1536,7 +1536,7 @@ static NTSTATUS server_ioctl_file( HANDLE handle, HANDLE event,
if (wait_handle && status != STATUS_PENDING)
{
io->u.Status = status;
- io->Information = wine_server_reply_size( reply );
+ io->Information = reply->size;
}
}
SERVER_END_REQ;
diff --git a/server/fd.c b/server/fd.c
index 5d80e218b9..dbfb65abd0 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -2579,7 +2579,7 @@ DECL_HANDLER(ioctl)
if ((async = create_request_async( fd, fd->comp_flags, &req->async )))
{
- reply->wait = async_handoff( async, fd->fd_ops->ioctl( fd, req->code, async ), NULL, 0 );
+ reply->wait = async_handoff( async, fd->fd_ops->ioctl( fd, req->code, async ), &reply->size, 0 );
reply->options = fd->options;
release_object( async );
}
diff --git a/server/protocol.def b/server/protocol.def
index 6c44b2b43f..f1f694bf96 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -2484,6 +2484,7 @@ enum message_type
@REPLY
obj_handle_t wait; /* handle to wait on for blocking ioctl */
unsigned int options; /* device open options */
+ data_size_t size; /* result size */
VARARG(out_data,bytes); /* ioctl output data */
@END
--
2.17.1

View File

@ -5300,19 +5300,16 @@ fi
# | * [#30155] Improve support for SafeDisc v2.05.030
# |
# | Modified files:
# | * dlls/ntdll/file.c, dlls/ntoskrnl.exe/ntoskrnl.c, dlls/ntoskrnl.exe/tests/ntoskrnl.c, server/device.c, server/fd.c,
# | server/protocol.def
# | * dlls/ntoskrnl.exe/ntoskrnl.c, dlls/ntoskrnl.exe/tests/ntoskrnl.c, server/device.c
# |
if test "$enable_ntoskrnl_safedisc_2" -eq 1; then
patch_apply ntoskrnl-safedisc-2/0001-ntoskrnl.exe-Return-driver-dispatch-result-to-caller.patch
patch_apply ntoskrnl-safedisc-2/0002-ntoskrnl.exe-Always-copy-the-buffer-for-non-METHOD_B.patch
patch_apply ntoskrnl-safedisc-2/0003-server-Delay-completing-a-synchronous-IRP.patch
patch_apply ntoskrnl-safedisc-2/0004-server-Return-the-driver-s-Information-from-ioctl.patch
(
printf '%s\n' '+ { "Chip Davis", "ntoskrnl.exe: Return driver dispatch result to caller.", 1 },';
printf '%s\n' '+ { "Chip Davis", "ntoskrnl.exe: Always copy the buffer for non-METHOD_BUFFERED ioctls.", 1 },';
printf '%s\n' '+ { "Chip Davis", "server: Delay completing a synchronous IRP.", 1 },';
printf '%s\n' '+ { "Chip Davis", "server: Return the driver'\''s '\''Information'\'' from ioctl.", 1 },';
) >> "$patchlist"
fi