[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/2] Memory proxies: Add support for anonymous mappings
From: |
Joan Lledó |
Subject: |
[PATCH 2/2] Memory proxies: Add support for anonymous mappings |
Date: |
Sat, 6 Nov 2021 09:13:33 +0100 |
From: Sergey Bugaev <bugaevc@gmail.com>
* vm/memory_object_proxy.c:
* memory_object_get_proxy():
* Return KERN_INVALID_ARGUMENT when the entry is a submap.
* Create a pager for the vm_object when the entry doesn't
have any yet, since it's an anonymous mapping.
---
vm/memory_object_proxy.c | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/vm/memory_object_proxy.c b/vm/memory_object_proxy.c
index b6c73576..13a124ba 100644
--- a/vm/memory_object_proxy.c
+++ b/vm/memory_object_proxy.c
@@ -201,6 +201,7 @@ memory_object_get_proxy (task_t task, const vm_offset_t
address,
{
kern_return_t ret;
vm_map_entry_t entry, tmp_entry;
+ vm_object_t object;
vm_offset_t offset, start;
ipc_port_t pager;
@@ -217,16 +218,28 @@ memory_object_get_proxy (task_t task, const vm_offset_t
address,
entry = tmp_entry;
}
+ if (entry->is_sub_map) {
+ vm_map_unlock_read(task->map);
+ return(KERN_INVALID_ARGUMENT);
+ }
+
/* Limit the allowed protection and range to the entry ones */
if (len > entry->vme_end - entry->vme_start) {
vm_map_unlock_read(task->map);
return(KERN_INVALID_ARGUMENT);
}
-
max_protection &= entry->max_protection;
- pager = ipc_port_copy_send(entry->object.vm_object->pager);
- offset = entry->offset;
- start = 0;
+
+ object = entry->object.vm_object;
+ vm_object_lock(object);
+ /* Create a pager in case this is an internal object that does
+ not yet have one. */
+ vm_object_pager_create(object);
+ pager = ipc_port_copy_send(object->pager);
+ vm_object_unlock(object);
+
+ start = (address - entry->vme_start) + entry->offset;
+ offset = 0;
vm_map_unlock_read(task->map);
--
2.31.1
- Re: [PATCH] new interface: memory_object_get_proxy, (continued)
- Re: [PATCH] new interface: memory_object_get_proxy, Sergey Bugaev, 2021/11/01
- Re: [PATCH] new interface: memory_object_get_proxy, Joan Lledó, 2021/11/01
- Re: [PATCH] new interface: memory_object_get_proxy, Sergey Bugaev, 2021/11/01
- Re: [PATCH] new interface: memory_object_get_proxy, Sergey Bugaev, 2021/11/01
- Re: [PATCH] new interface: memory_object_get_proxy, Samuel Thibault, 2021/11/01
- Re: [PATCH] new interface: memory_object_get_proxy, Sergey Bugaev, 2021/11/01
- Re: [PATCH] new interface: memory_object_get_proxy, Samuel Thibault, 2021/11/01
- Re: [PATCH] new interface: memory_object_get_proxy, Joan Lledó, 2021/11/01
- Re: [PATCH] new interface: memory_object_get_proxy, Joan Lledó, 2021/11/06
- [PATCH 1/2] new interface: memory_object_get_proxy, Joan Lledó, 2021/11/06
- [PATCH 2/2] Memory proxies: Add support for anonymous mappings,
Joan Lledó <=
- Re: [PATCH] new interface: memory_object_get_proxy, Samuel Thibault, 2021/11/07
Re: [PATCH] new interface: memory_object_get_proxy, Sergey Bugaev, 2021/11/01
Re: [PATCH] new interface: memory_object_get_proxy, Sergey Bugaev, 2021/11/04