Просмотр исходного кода

hle: kernel: svc: MapProcessMemory: Fix usage of KPageLinkedList to use physical address space.

bunnei 4 лет назад
Родитель
Сommit
1b3dba329a
1 измененных файлов с 5 добавлено и 2 удалено
  1. 5 2
      src/core/hle/kernel/svc.cpp

+ 5 - 2
src/core/hle/kernel/svc.cpp

@@ -1362,8 +1362,11 @@ static ResultCode MapProcessMemory(Core::System& system, VAddr dst_address, Hand
              ResultInvalidMemoryRegion);
 
     // Create a new page group.
-    KMemoryInfo kBlockInfo = dst_pt.QueryInfo(dst_address);
-    KPageLinkedList pg(kBlockInfo.GetAddress(), kBlockInfo.GetNumPages());
+    KPageLinkedList pg;
+    R_TRY(src_pt.MakeAndOpenPageGroup(
+        std::addressof(pg), src_address, size / PageSize, KMemoryState::FlagCanMapProcess,
+        KMemoryState::FlagCanMapProcess, KMemoryPermission::None, KMemoryPermission::None,
+        KMemoryAttribute::All, KMemoryAttribute::None));
 
     // Map the group.
     R_TRY(dst_pt.MapPages(dst_address, pg, KMemoryState::SharedCode,