From 72876116068fb9d0e21d6f8c6724049eb82f4f54 Mon Sep 17 00:00:00 2001
From: Jacek Caban <jacek@codeweavers.com>
Date: Mon, 27 May 2019 13:39:15 +0200
Subject: [PATCH] ntoskrnl.exe: Set irp context handle in dispatch_irp.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
---
 dlls/ntoskrnl.exe/ntoskrnl.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index c9b56b73740..acfbec89b70 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -587,6 +587,8 @@ static void dispatch_irp( DEVICE_OBJECT *device, IRP *irp, struct dispatch_conte
     LARGE_INTEGER count;
 
     IoSetCompletionRoutine( irp, dispatch_irp_completion, context->handle, TRUE, TRUE, TRUE );
+    context->handle = 0;
+
     KeQueryTickCount( &count );  /* update the global KeTickCount */
 
     device->CurrentIrp = irp;
@@ -976,11 +978,7 @@ NTSTATUS CDECL wine_ntoskrnl_main_loop( HANDLE stop_event )
         case STATUS_SUCCESS:
             assert( context.params.type != IRP_CALL_NONE && context.params.type < ARRAY_SIZE(dispatch_funcs) );
             status = dispatch_funcs[context.params.type]( &context );
-            if (status == STATUS_SUCCESS)
-            {
-                context.handle = 0;  /* status reported by IoCompleteRequest */
-                if (!context.in_buff) context.in_size = 4096;
-            }
+            if (!context.in_buff) context.in_size = 4096;
             break;
         case STATUS_BUFFER_OVERFLOW:
             HeapFree( GetProcessHeap(), 0, context.in_buff );
-- 
GitLab