mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-22 18:15:14 +00:00
Fix read-only file unmaps
Fixes Genshin Impact (CUSA23681)
This commit is contained in:
parent
b68ca43166
commit
63bbe08631
@ -537,6 +537,7 @@ u64 MemoryManager::UnmapBytesFromEntry(VAddr virtual_addr, VirtualMemoryArea vma
|
|||||||
vma_base_size - start_in_vma < size ? vma_base_size - start_in_vma : size;
|
vma_base_size - start_in_vma < size ? vma_base_size - start_in_vma : size;
|
||||||
const bool has_backing = type == VMAType::Direct || type == VMAType::File;
|
const bool has_backing = type == VMAType::Direct || type == VMAType::File;
|
||||||
const auto prot = vma_base.prot;
|
const auto prot = vma_base.prot;
|
||||||
|
const bool readonly_file = prot == MemoryProt::CpuRead && type == VMAType::File;
|
||||||
|
|
||||||
if (type == VMAType::Free) {
|
if (type == VMAType::Free) {
|
||||||
return adjusted_size;
|
return adjusted_size;
|
||||||
@ -555,8 +556,6 @@ u64 MemoryManager::UnmapBytesFromEntry(VAddr virtual_addr, VirtualMemoryArea vma
|
|||||||
vma.disallow_merge = false;
|
vma.disallow_merge = false;
|
||||||
vma.name = "";
|
vma.name = "";
|
||||||
const auto post_merge_it = MergeAdjacent(vma_map, new_it);
|
const auto post_merge_it = MergeAdjacent(vma_map, new_it);
|
||||||
auto& post_merge_vma = post_merge_it->second;
|
|
||||||
bool readonly_file = post_merge_vma.prot == MemoryProt::CpuRead && type == VMAType::File;
|
|
||||||
if (type != VMAType::Reserved && type != VMAType::PoolReserved) {
|
if (type != VMAType::Reserved && type != VMAType::PoolReserved) {
|
||||||
// If this mapping has GPU access, unmap from GPU.
|
// If this mapping has GPU access, unmap from GPU.
|
||||||
if (IsValidGpuMapping(virtual_addr, size)) {
|
if (IsValidGpuMapping(virtual_addr, size)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user