From 9f6b24edfddf871320290463437b3f3cb7e29006 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Fri, 17 Jul 2020 01:19:07 -0300 Subject: Improve kernel IPC related syscalls (#1379) * Implement session count decrement when the handle is closed * Remove unused field * Implement SendSyncRequestWithUserBuffer, SendAsyncRequestWithUserBuffer and ReplyAndReceiveWithUserBuffer syscalls * Nits * Fix swapped copy dst/src * Add missing pointer buffer descriptor write on reply * Fix IPC unaligned buffer copy and restoring client attributes on reply * Oops * Fix SetIpcMappingPermission * Fix unaligned copy bugs * Free memory used for temporary IPC buffers --- Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlock.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlock.cs') diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlock.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlock.cs index b7c2b309..04e14e1b 100644 --- a/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlock.cs +++ b/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlock.cs @@ -41,7 +41,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory Attribute |= attribute; } - public void SetIpcMappingPermission(MemoryPermission permission) + public void SetIpcMappingPermission(MemoryPermission newPermission) { int oldIpcRefCount = IpcRefCount++; @@ -52,10 +52,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory if (oldIpcRefCount == 0) { - SourcePermission = permission; + SourcePermission = Permission; Permission &= ~MemoryPermission.ReadAndWrite; - Permission |= MemoryPermission.ReadAndWrite & permission; + Permission |= MemoryPermission.ReadAndWrite & newPermission; } Attribute |= MemoryAttribute.IpcMapped; -- cgit v1.2.3