You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against c293cd781fb4b330b7d93171501134f86a5138b8.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From b6a6f7448cb4f202edec1a2644315e745b709afe Mon Sep 17 00:00:00 2001
|
||||
From 045f711cb526f02ce6a163bf8ab973b5d06a1c86 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Wesie <awesie@gmail.com>
|
||||
Date: Fri, 24 Apr 2020 14:55:14 -0500
|
||||
Subject: [PATCH] ntdll: Track if a WRITECOPY page has been modified.
|
||||
@@ -12,18 +12,18 @@ Signed-off-by: Andrew Wesie <awesie@gmail.com>
|
||||
1 file changed, 19 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
|
||||
index 578ef4139b8..ff15840adb6 100644
|
||||
index 2688383cc9f..b0c888d13a0 100644
|
||||
--- a/dlls/ntdll/unix/virtual.c
|
||||
+++ b/dlls/ntdll/unix/virtual.c
|
||||
@@ -119,6 +119,7 @@ struct file_view
|
||||
@@ -122,6 +122,7 @@ struct file_view
|
||||
#define VPROT_GUARD 0x10
|
||||
#define VPROT_COMMITTED 0x20
|
||||
#define VPROT_WRITEWATCH 0x40
|
||||
+#define VPROT_WRITTEN 0x80
|
||||
/* per-mapping protection flags */
|
||||
#define VPROT_SYSTEM 0x0200 /* system view (underlying mmap not under our control) */
|
||||
|
||||
@@ -1072,7 +1073,7 @@ static int get_unix_prot( BYTE vprot )
|
||||
#define VPROT_PLACEHOLDER 0x0400
|
||||
@@ -1130,7 +1131,7 @@ static int get_unix_prot( BYTE vprot )
|
||||
#if defined(__i386__)
|
||||
if (vprot & VPROT_WRITECOPY)
|
||||
{
|
||||
@@ -32,7 +32,7 @@ index 578ef4139b8..ff15840adb6 100644
|
||||
prot = (prot & ~PROT_WRITE) | PROT_READ;
|
||||
else
|
||||
prot |= PROT_WRITE | PROT_READ;
|
||||
@@ -1635,7 +1636,11 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz
|
||||
@@ -1702,7 +1703,11 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz
|
||||
*/
|
||||
static DWORD get_win32_prot( BYTE vprot, unsigned int map_prot )
|
||||
{
|
||||
@@ -45,7 +45,7 @@ index 578ef4139b8..ff15840adb6 100644
|
||||
if (vprot & VPROT_GUARD) ret |= PAGE_GUARD;
|
||||
if (map_prot & SEC_NOCACHE) ret |= PAGE_NOCACHE;
|
||||
return ret;
|
||||
@@ -1746,12 +1751,21 @@ static BOOL set_vprot( struct file_view *view, void *base, size_t size, BYTE vpr
|
||||
@@ -1813,12 +1818,21 @@ static BOOL set_vprot( struct file_view *view, void *base, size_t size, BYTE vpr
|
||||
if (view->protect & VPROT_WRITEWATCH)
|
||||
{
|
||||
/* each page may need different protections depending on write watch flag */
|
||||
@@ -69,7 +69,7 @@ index 578ef4139b8..ff15840adb6 100644
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -3325,7 +3339,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
@@ -3691,7 +3705,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
}
|
||||
if (vprot & VPROT_WRITECOPY)
|
||||
{
|
||||
@@ -79,5 +79,5 @@ index 578ef4139b8..ff15840adb6 100644
|
||||
}
|
||||
/* ignore fault if page is writable now */
|
||||
--
|
||||
2.38.1
|
||||
2.40.1
|
||||
|
||||
|
Reference in New Issue
Block a user