Added patch to fix issues when driver dispatch routine returns different status codes.

This commit is contained in:
Sebastian Lackner 2014-09-28 17:34:05 +02:00
parent a9a8b351ea
commit 7b26c74d54
5 changed files with 63 additions and 1 deletions

View File

@ -35,8 +35,9 @@ Wine. All those differences are also documented on the
Included bugfixes and improvements
==================================
**Bugfixes and features included in the next upcoming release [3]:**
**Bugfixes and features included in the next upcoming release [4]:**
* Fix issues when driver dispatch routine returns different status codes ([Wine Bug #30155](http://bugs.winehq.org/show_bug.cgi?id=30155))
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](http://bugs.winehq.org/show_bug.cgi?id=35652))
* Support for FIND_FIRST_EX_CASE_SENSITIVE flag in FindFirstFileExW
* Update a XIM candidate position when cursor location changes ([Wine Bug #30938](http://bugs.winehq.org/show_bug.cgi?id=30938))

1
debian/changelog vendored
View File

@ -4,6 +4,7 @@ wine-compholio (1.7.28) UNRELEASED; urgency=low
* Added patch to fix winemenubuilder desktop icon wine path (when using multiple wine versions).
* Added patch to support FIND_FIRST_EX_CASE_SENSITIVE flag in FindFirstFileExW.
* Added patch to send WM_PAINT event during dialog creation.
* Added patch to fix issues when driver dispatch routine returns different status codes.
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 21 Sep 2014 01:44:14 +0200
wine-compholio (1.7.27) unstable; urgency=low

View File

@ -48,6 +48,7 @@ PATCHLIST := \
ntdll-Junction_Points.ok \
ntdll-Pipe_SpecialCharacters.ok \
ntdll-loader_EntryPoint.ok \
ntoskrnl-Irp_Status.ok \
quartz-MediaSeeking_Positions.ok \
riched20-IText_Interface.ok \
server-ACL_Compat.ok \
@ -699,6 +700,24 @@ ntdll-loader_EntryPoint.ok:
echo '+ { "ntdll-loader_EntryPoint", "Sebastian Lackner", "Set ldr.EntryPoint for main executable." },'; \
) > ntdll-loader_EntryPoint.ok
# Patchset ntoskrnl-Irp_Status
# |
# | Included patches:
# | * Handle issues when driver returns two different status codes from dispatcher. [by Sebastian Lackner]
# |
# | This patchset fixes the following Wine bugs:
# | * [#30155] Fix issues when driver dispatch routine returns different status codes
# |
# | Modified files:
# | * dlls/ntoskrnl.exe/ntoskrnl.c
# |
.INTERMEDIATE: ntoskrnl-Irp_Status.ok
ntoskrnl-Irp_Status.ok:
$(call APPLY_FILE,ntoskrnl-Irp_Status/0001-ntoskrnl-Handle-issues-when-driver-returns-two-diffe.patch)
@( \
echo '+ { "ntoskrnl-Irp_Status", "Sebastian Lackner", "Handle issues when driver returns two different status codes from dispatcher." },'; \
) > ntoskrnl-Irp_Status.ok
# Patchset quartz-MediaSeeking_Positions
# |
# | Included patches:

View File

@ -0,0 +1,37 @@
From 5b309642c101ce36019023aea84fdb6c0d82fc6c Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 28 Sep 2014 17:29:07 +0200
Subject: ntoskrnl: Handle issues when driver returns two different status
codes from dispatcher.
---
dlls/ntoskrnl.exe/ntoskrnl.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 17a0d39..73e12b9 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -195,6 +195,19 @@ static NTSTATUS process_ioctl( DEVICE_OBJECT *device, ULONG code, void *in_buff,
DPRINTF( "%04x:Ret driver dispatch %p (device=%p,irp=%p) retval=%08x\n",
GetCurrentThreadId(), dispatch, device, &irp, status );
+ /* Ensure returned status code is consistent */
+ if (status == STATUS_PENDING)
+ {
+ FIXME( "driver returned status=STATUS_PENDING, irp.IoStatus.u.Status=%08x\n",
+ irp.IoStatus.u.Status );
+ }
+ else if (irp.IoStatus.u.Status != status)
+ {
+ FIXME( "driver returned status=%08x != irp.IoStatus.u.Status=%08x\n",
+ status, irp.IoStatus.u.Status );
+ irp.IoStatus.u.Status = status;
+ }
+
*out_size = (irp.IoStatus.u.Status >= 0) ? irp.IoStatus.Information : 0;
if ((code & 3) == METHOD_BUFFERED)
{
--
2.1.1

View File

@ -0,0 +1,4 @@
Author: Sebastian Lackner
Subject: Handle issues when driver returns two different status codes from dispatcher.
Revision: 1
Fixes: [30155] Fix issues when driver dispatch routine returns different status codes