aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/shared_memory.h
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2019-03-29 18:01:38 -0400
committerLioncash <mathew1800@gmail.com>2019-03-29 18:16:19 -0400
commitc6147a439d16112a0794b3fb98e825a9be864066 (patch)
tree5471089bf0b6b0b58517325fef2c6b0a634ac9cc /src/core/hle/kernel/shared_memory.h
parentf770c17d011e76cb268df5ba5d687609a0f514d4 (diff)
kernel/shared_memory: Sanitize supplied size when unmapping
The kernel makes sure that the given size to unmap is always the same size as the entire region managed by the shared memory instance, otherwise it returns an error code signifying an invalid size. This is similarly done for transfer memory (which we already check for).
Diffstat (limited to 'src/core/hle/kernel/shared_memory.h')
-rw-r--r--src/core/hle/kernel/shared_memory.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/core/hle/kernel/shared_memory.h b/src/core/hle/kernel/shared_memory.h
index dab2a6bea..37e18c443 100644
--- a/src/core/hle/kernel/shared_memory.h
+++ b/src/core/hle/kernel/shared_memory.h
@@ -104,11 +104,17 @@ public:
/**
* Unmaps a shared memory block from the specified address in system memory
+ *
* @param target_process Process from which to unmap the memory block.
- * @param address Address in system memory where the shared memory block is mapped
+ * @param address Address in system memory where the shared memory block is mapped.
+ * @param unmap_size The amount of bytes to unmap from this shared memory instance.
+ *
* @return Result code of the unmap operation
+ *
+ * @pre The given size to unmap must be the same size as the amount of memory managed by
+ * the SharedMemory instance itself, otherwise ERR_INVALID_SIZE will be returned.
*/
- ResultCode Unmap(Process& target_process, VAddr address);
+ ResultCode Unmap(Process& target_process, VAddr address, u64 unmap_size);
/**
* Gets a pointer to the shared memory block