[PATCH] ntdll: Reset YMM state in NtSetContextThread() if that is assumed by the context being set.

Paul Gofman pgofman at codeweavers.com
Wed Mar 3 05:55:00 CST 2021


Fixes test failure on testbot where compaction is not supported
(resetting YMM state if that is implied by the context being set).

Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
 dlls/ntdll/unix/signal_i386.c   | 2 +-
 dlls/ntdll/unix/signal_x86_64.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c
index 0153f772b6d..9e97fd9e298 100644
--- a/dlls/ntdll/unix/signal_i386.c
+++ b/dlls/ntdll/unix/signal_i386.c
@@ -1254,7 +1254,7 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context )
             xsave->xstate.mask |= XSTATE_MASK_GSSE;
             memcpy( &xsave->xstate.ymm_high, &xs->YmmContext, sizeof(xsave->xstate.ymm_high) );
         }
-        else if (xs->CompactionMask & XSTATE_MASK_GSSE)
+        else
             xsave->xstate.mask &= ~XSTATE_MASK_GSSE;
     }
 
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
index e62e958b4aa..2a030372fb7 100644
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -1864,7 +1864,7 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context )
             xsave->xstate.Mask |= XSTATE_MASK_GSSE;
             memcpy( &xsave->xstate.YmmContext, &xs->YmmContext, sizeof(xs->YmmContext) );
         }
-        else if (xs->CompactionMask & XSTATE_MASK_GSSE)
+        else
             xsave->xstate.Mask &= ~XSTATE_MASK_GSSE;
     }
     return STATUS_SUCCESS;
-- 
2.29.2




More information about the wine-devel mailing list