From f0199a17f6cee85bd9e88501c0961f001c396687 Mon Sep 17 00:00:00 2001 From: Hyper Date: Sat, 7 Jan 2017 02:21:22 +1300 Subject: [PATCH] Kernel: Fix SharedMemory objects always returning error when addr = 0 (#2404) Closes #2400 --- src/core/hle/svc.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 855f3af82..843d697ec 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -897,7 +897,11 @@ static ResultCode CreateMemoryBlock(Kernel::Handle* out_handle, u32 addr, u32 si return ResultCode(ErrorDescription::InvalidCombination, ErrorModule::OS, ErrorSummary::InvalidArgument, ErrorLevel::Usage); - if (addr < Memory::PROCESS_IMAGE_VADDR || addr + size > Memory::SHARED_MEMORY_VADDR_END) { + // TODO(Subv): Processes with memory type APPLICATION are not allowed + // to create memory blocks with addr = 0, any attempts to do so + // should return error 0xD92007EA. + if ((addr < Memory::PROCESS_IMAGE_VADDR || addr + size > Memory::SHARED_MEMORY_VADDR_END) && + addr != 0) { return ResultCode(ErrorDescription::InvalidAddress, ErrorModule::OS, ErrorSummary::InvalidArgument, ErrorLevel::Usage); }