Răsfoiți Sursa

hle: kernel: KCodeMemory: Correct m_page_group number of pages.

Credits to @xerpi for finding this issue and pointing it out on #7519.
bunnei 4 ani în urmă
părinte
comite
d134ca68c6
1 a modificat fișierele cu 3 adăugiri și 2 ștergeri
  1. 3 2
      src/core/hle/kernel/k_code_memory.cpp

+ 3 - 2
src/core/hle/kernel/k_code_memory.cpp

@@ -2,6 +2,7 @@
 // Licensed under GPLv2 or any later version
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 // Refer to the license.txt file included.
 
 
+#include "common/alignment.h"
 #include "common/common_types.h"
 #include "common/common_types.h"
 #include "core/device_memory.h"
 #include "core/device_memory.h"
 #include "core/hle/kernel/k_auto_object.h"
 #include "core/hle/kernel/k_auto_object.h"
@@ -29,7 +30,7 @@ ResultCode KCodeMemory::Initialize(Core::DeviceMemory& device_memory, VAddr addr
 
 
     // Construct the page group.
     // Construct the page group.
     KMemoryInfo kBlockInfo = page_table.QueryInfo(addr);
     KMemoryInfo kBlockInfo = page_table.QueryInfo(addr);
-    m_page_group = KPageLinkedList(kBlockInfo.GetAddress(), kBlockInfo.GetNumPages());
+    m_page_group = KPageLinkedList(addr, Common::DivideUp(size, PageSize));
 
 
     // Lock the memory.
     // Lock the memory.
     R_TRY(page_table.LockForCodeMemory(addr, size))
     R_TRY(page_table.LockForCodeMemory(addr, size))
@@ -143,4 +144,4 @@ ResultCode KCodeMemory::UnmapFromOwner(VAddr address, size_t size) {
     return ResultSuccess;
     return ResultSuccess;
 }
 }
 
 
-} // namespace Kernel
+} // namespace Kernel