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);