summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-07-11 20:57:20 +0200
committerGitHub <noreply@github.com>2019-07-11 20:57:20 +0200
commit79c382fafd81ec5ca42c825a2f1abd53799faf50 (patch)
treec8ec8c369e1feeb02005920e96ef49fc87bf5596 /src/core/hle/kernel
parentMerge pull request #2723 from lioncash/mem (diff)
parentRestore memory perms on svcUnmapMemory/UnloadNro (diff)
downloadyuzu-79c382fafd81ec5ca42c825a2f1abd53799faf50.tar
yuzu-79c382fafd81ec5ca42c825a2f1abd53799faf50.tar.gz
yuzu-79c382fafd81ec5ca42c825a2f1abd53799faf50.tar.bz2
yuzu-79c382fafd81ec5ca42c825a2f1abd53799faf50.tar.lz
yuzu-79c382fafd81ec5ca42c825a2f1abd53799faf50.tar.xz
yuzu-79c382fafd81ec5ca42c825a2f1abd53799faf50.tar.zst
yuzu-79c382fafd81ec5ca42c825a2f1abd53799faf50.zip
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/svc.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 332573a95..58374f829 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -318,7 +318,14 @@ static ResultCode UnmapMemory(Core::System& system, VAddr dst_addr, VAddr src_ad
return result;
}
- return vm_manager.UnmapRange(dst_addr, size);
+ const auto unmap_res = vm_manager.UnmapRange(dst_addr, size);
+
+ // Reprotect the source mapping on success
+ if (unmap_res.IsSuccess()) {
+ ASSERT(vm_manager.ReprotectRange(src_addr, size, VMAPermission::ReadWrite).IsSuccess());
+ }
+
+ return unmap_res;
}
/// Connect to an OS service given the port name, returns the handle to the port to out