diff --git a/src/core/libraries/kernel/memory.cpp b/src/core/libraries/kernel/memory.cpp index 378064e44..f0b7df4c9 100644 --- a/src/core/libraries/kernel/memory.cpp +++ b/src/core/libraries/kernel/memory.cpp @@ -339,7 +339,11 @@ s32 PS4_SYSV_ABI sceKernelMprotect(const void* addr, u64 size, s32 prot) { Core::MemoryManager* memory_manager = Core::Memory::Instance(); Core::MemoryProt protection_flags = static_cast(prot); - return memory_manager->Protect(aligned_addr, aligned_size, protection_flags); + s32 result = memory_manager->Protect(aligned_addr, aligned_size, protection_flags); + if (result == ORBIS_OK) { + memory_manager->InvalidateMemory(aligned_addr, aligned_size); + } + return result; } s32 PS4_SYSV_ABI posix_mprotect(const void* addr, u64 size, s32 prot) { @@ -370,6 +374,7 @@ s32 PS4_SYSV_ABI sceKernelMtypeprotect(const void* addr, u64 size, s32 mtype, s3 s32 result = memory_manager->Protect(aligned_addr, aligned_size, protection_flags); if (result == ORBIS_OK) { memory_manager->SetDirectMemoryType(aligned_addr, aligned_size, mtype); + memory_manager->InvalidateMemory(aligned_addr, aligned_size); } return result; }