[PATCH 6/6] Revert "ntdll: Preserve syscall frame when calling async IO system APC."
Zebediah Figura
z.figura12 at gmail.com
Mon May 31 22:16:37 CDT 2021
This reverts commit 8b8ddffa2152832908ced42191fa19dcb64d900e.
ws2_32 no longer uses system APCs.
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/ntdll/unix/server.c | 15 ---------------
dlls/ntdll/unix/signal_arm.c | 9 ---------
dlls/ntdll/unix/signal_arm64.c | 10 ----------
dlls/ntdll/unix/signal_i386.c | 12 +-----------
dlls/ntdll/unix/signal_x86_64.c | 11 +----------
dlls/ntdll/unix/unix_private.h | 3 ---
6 files changed, 2 insertions(+), 58 deletions(-)
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
index c0cf13b3cb4..cec2ef250a3 100644
--- a/dlls/ntdll/unix/server.c
+++ b/dlls/ntdll/unix/server.c
@@ -379,24 +379,9 @@ static void invoke_system_apc( const apc_call_t *call, apc_result_t *result, BOO
{
IO_STATUS_BLOCK *iosb = wine_server_get_ptr( call->async_io.sb );
struct async_fileio *user = wine_server_get_ptr( call->async_io.user );
- void *saved_frame = get_syscall_frame();
- void *frame;
result->type = call->type;
result->async_io.status = user->callback( user, iosb, call->async_io.status );
-
- if ((frame = get_syscall_frame()) != saved_frame)
- {
- /* The frame can be altered by syscalls from ws2_32 async callbacks
- * which are currently in the user part. */
- static unsigned int once;
-
- if (!once++)
- FIXME( "syscall frame changed in APC function, frame %p, saved_frame %p.\n", frame, saved_frame );
-
- set_syscall_frame( saved_frame );
- }
-
if (result->async_io.status != STATUS_PENDING)
result->async_io.total = iosb->Information;
break;
diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c
index 11b6aa8d0ad..8ecdaa3995b 100644
--- a/dlls/ntdll/unix/signal_arm.c
+++ b/dlls/ntdll/unix/signal_arm.c
@@ -201,15 +201,6 @@ static inline struct arm_thread_data *arm_thread_data(void)
return (struct arm_thread_data *)ntdll_get_thread_data()->cpu_data;
}
-void *get_syscall_frame(void)
-{
- return arm_thread_data()->syscall_frame;
-}
-
-void set_syscall_frame(void *frame)
-{
- arm_thread_data()->syscall_frame = frame;
-}
/***********************************************************************
* unwind_builtin_dll
diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c
index 2359b1838d6..e696ba41a66 100644
--- a/dlls/ntdll/unix/signal_arm64.c
+++ b/dlls/ntdll/unix/signal_arm64.c
@@ -157,16 +157,6 @@ static inline struct arm64_thread_data *arm64_thread_data(void)
return (struct arm64_thread_data *)ntdll_get_thread_data()->cpu_data;
}
-void *get_syscall_frame(void)
-{
- return arm64_thread_data()->syscall_frame;
-}
-
-void set_syscall_frame(void *frame)
-{
- arm64_thread_data()->syscall_frame = frame;
-}
-
extern void raise_func_trampoline( EXCEPTION_RECORD *rec, CONTEXT *context, void *dispatcher );
/***********************************************************************
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c
index 87024e1bfce..707e965d8b3 100644
--- a/dlls/ntdll/unix/signal_i386.c
+++ b/dlls/ntdll/unix/signal_i386.c
@@ -527,16 +527,6 @@ static inline struct x86_thread_data *x86_thread_data(void)
return (struct x86_thread_data *)ntdll_get_thread_data()->cpu_data;
}
-void *get_syscall_frame(void)
-{
- return x86_thread_data()->syscall_frame;
-}
-
-void set_syscall_frame(void *frame)
-{
- x86_thread_data()->syscall_frame = frame;
-}
-
static struct syscall_xsave *get_syscall_xsave( struct syscall_frame *frame )
{
return (struct syscall_xsave *)((ULONG_PTR)((struct syscall_xsave *)frame - 1) & ~63);
@@ -973,7 +963,7 @@ __ASM_GLOBAL_FUNC( set_full_cpu_context,
*/
void signal_restore_full_cpu_context(void)
{
- struct syscall_xsave *xsave = get_syscall_xsave( get_syscall_frame() );
+ struct syscall_xsave *xsave = get_syscall_xsave( x86_thread_data()->syscall_frame );
if (cpu_info.ProcessorFeatureBits & CPU_FEATURE_XSAVE)
{
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
index dcb0e588c66..1ab991d3cb5 100644
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -327,15 +327,6 @@ static inline struct amd64_thread_data *amd64_thread_data(void)
return (struct amd64_thread_data *)ntdll_get_thread_data()->cpu_data;
}
-void *get_syscall_frame(void)
-{
- return amd64_thread_data()->syscall_frame;
-}
-
-void set_syscall_frame(void *frame)
-{
- amd64_thread_data()->syscall_frame = frame;
-}
static struct syscall_xsave *get_syscall_xsave( struct syscall_frame *frame )
{
@@ -1598,7 +1589,7 @@ __ASM_GLOBAL_FUNC( set_full_cpu_context,
*/
void signal_restore_full_cpu_context(void)
{
- struct syscall_xsave *xsave = get_syscall_xsave( get_syscall_frame() );
+ struct syscall_xsave *xsave = get_syscall_xsave( amd64_thread_data()->syscall_frame );
if (cpu_info.ProcessorFeatureBits & CPU_FEATURE_XSAVE)
{
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index f28d5cf4e99..5b9af322a68 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -290,9 +290,6 @@ extern void WINAPI DECLSPEC_NORETURN call_user_exception_dispatcher( EXCEPTION_R
NTSTATUS (WINAPI *dispatcher)(EXCEPTION_RECORD*,CONTEXT*) ) DECLSPEC_HIDDEN;
extern void WINAPI call_raise_user_exception_dispatcher( NTSTATUS (WINAPI *dispatcher)(void) ) DECLSPEC_HIDDEN;
-extern void *get_syscall_frame(void) DECLSPEC_HIDDEN;
-extern void set_syscall_frame(void *frame) DECLSPEC_HIDDEN;
-
#define IMAGE_DLLCHARACTERISTICS_PREFER_NATIVE 0x0010 /* Wine extension */
#define TICKSPERSEC 10000000
--
2.30.2
More information about the wine-devel
mailing list