core: hle: kernel: KPageTable: SetHeapSize: Cleanup & take physical memory lock.
This commit is contained in:
		| @@ -885,6 +885,9 @@ ResultCode KPageTable::SetMaxHeapSize(std::size_t size) { | ||||
| } | ||||
|  | ||||
| ResultCode KPageTable::SetHeapSize(VAddr* out, std::size_t size) { | ||||
|     // Lock the physical memory lock. | ||||
|     std::lock_guard phys_lk(map_physical_memory_lock); | ||||
|  | ||||
|     // Try to perform a reduction in heap, instead of an extension. | ||||
|     VAddr cur_address{}; | ||||
|     std::size_t allocation_size{}; | ||||
| @@ -1014,12 +1017,12 @@ ResultVal<VAddr> KPageTable::AllocateAndMapMemory(std::size_t needed_num_pages, | ||||
|     } | ||||
|  | ||||
|     if (is_map_only) { | ||||
|         CASCADE_CODE(Operate(addr, needed_num_pages, perm, OperationType::Map, map_addr)); | ||||
|         R_TRY(Operate(addr, needed_num_pages, perm, OperationType::Map, map_addr)); | ||||
|     } else { | ||||
|         KPageLinkedList page_group; | ||||
|         CASCADE_CODE(system.Kernel().MemoryManager().Allocate(page_group, needed_num_pages, | ||||
|                                                               memory_pool, allocation_option)); | ||||
|         CASCADE_CODE(Operate(addr, needed_num_pages, page_group, OperationType::MapGroup)); | ||||
|         R_TRY(system.Kernel().MemoryManager().Allocate(page_group, needed_num_pages, memory_pool, | ||||
|                                                        allocation_option)); | ||||
|         R_TRY(Operate(addr, needed_num_pages, page_group, OperationType::MapGroup)); | ||||
|     } | ||||
|  | ||||
|     block_manager->Update(addr, needed_num_pages, state, perm); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bunnei
					bunnei