From bf03e32027400c2401e6283453660fadd03e81ba Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Tue, 15 Jul 2014 23:09:32 -0700 Subject: [PATCH] Add a safety check for freeing kernel modules. --- Core/HLE/sceKernelModule.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Core/HLE/sceKernelModule.cpp b/Core/HLE/sceKernelModule.cpp index 2b204f644f..c9c8f96942 100644 --- a/Core/HLE/sceKernelModule.cpp +++ b/Core/HLE/sceKernelModule.cpp @@ -217,7 +217,8 @@ public: Module() : textStart(0), textEnd(0), memoryBlockAddr(0), isFake(false) {} ~Module() { if (memoryBlockAddr) { - if (memoryBlockAddr < PSP_GetUserMemoryBase()) { + // If it's either below user memory, or using a high kernel bit, it's in kernel. + if (memoryBlockAddr < PSP_GetUserMemoryBase() || memoryBlockAddr > PSP_GetUserMemoryEnd()) { kernelMemory.Free(memoryBlockAddr); } else { userMemory.Free(memoryBlockAddr);