From 6b94381cac594c44e51915220ac8267bfc20de5f Mon Sep 17 00:00:00 2001 From: patrickvl Date: Sun, 7 Jan 2018 17:21:59 +0100 Subject: [PATCH] Default page protection for contiguous memory shouldn't include EXECUTE rights Also added a TODO for future research --- src/CxbxKrnl/EmuD3D8.cpp | 2 +- src/CxbxKrnl/VMManager.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CxbxKrnl/EmuD3D8.cpp b/src/CxbxKrnl/EmuD3D8.cpp index e1d13cb1a..53b77e1ac 100644 --- a/src/CxbxKrnl/EmuD3D8.cpp +++ b/src/CxbxKrnl/EmuD3D8.cpp @@ -8526,7 +8526,7 @@ XTL::X_D3DPalette * WINAPI XTL::EMUPATCH(D3DDevice_CreatePalette2) X_D3DPalette *pPalette = EmuNewD3DPalette(); pPalette->Common |= (Size << X_D3DPALETTE_COMMON_PALETTESIZE_SHIFT); - pPalette->Data = (DWORD)g_VMManager.Allocate(XboxD3DPaletteSizeToBytes(Size), 0, (~((::ULONG_PTR)0)), PAGE_SIZE, PAGE_EXECUTE_READWRITE, true); + pPalette->Data = (DWORD)g_VMManager.Allocate(XboxD3DPaletteSizeToBytes(Size), 0, (~((::ULONG_PTR)0)), PAGE_SIZE, PAGE_READWRITE, true); // TODO : Can't we use MmAllocateContiguousMemory here? pPalette->Lock = X_D3DRESOURCE_LOCK_PALETTE; // emulated reference count for palettes // TODO: Should't we register the palette with a call to diff --git a/src/CxbxKrnl/VMManager.cpp b/src/CxbxKrnl/VMManager.cpp index f15253125..b8111a1fc 100644 --- a/src/CxbxKrnl/VMManager.cpp +++ b/src/CxbxKrnl/VMManager.cpp @@ -638,7 +638,7 @@ VAddr VMManager::MapMemoryBlock(size_t* size, PAddr low_addr, PAddr high_addr, U VirtualMemoryArea& final_vma = vma_handle->second; final_vma.type = VMAType::Allocated; - final_vma.permissions = PAGE_EXECUTE_READWRITE; + final_vma.permissions = bContiguous ? PAGE_READWRITE : PAGE_EXECUTE_READWRITE; final_vma.backing_block = offset; UpdatePageTableForVMA(final_vma);