From c0590f5de0fd4747fbe78bbfea21d9972daeacf7 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Mon, 23 Sep 2024 21:26:37 +0300 Subject: [PATCH] [NTOS:MM] Fix PTE protection for executable CoW pages Fixes Blender x64. See https://jira.reactos.org/browse/CORE-19761 --- ntoskrnl/mm/section.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ntoskrnl/mm/section.c b/ntoskrnl/mm/section.c index 1949d026149..f935e6f30c1 100644 --- a/ntoskrnl/mm/section.c +++ b/ntoskrnl/mm/section.c @@ -1509,7 +1509,12 @@ MmAlterViewAttributes(PMMSUPPORT AddressSpace, */ Page = MmGetPfnForProcess(Process, Address); - Protect = PAGE_READONLY; + /* Choose protection based on what was requested */ + if (NewProtect == PAGE_EXECUTE_READWRITE) + Protect = PAGE_EXECUTE_READ; + else + Protect = PAGE_READONLY; + if (IS_SWAP_FROM_SSE(Entry) || PFN_FROM_SSE(Entry) != Page) { Protect = NewProtect;