summaryrefslogtreecommitdiff
path: root/libc-parts/process-spawn.c
diff options
context:
space:
mode:
authorneal <neal>2008-06-07 13:16:26 +0000
committerneal <neal>2008-06-07 13:16:26 +0000
commite650eae91102ed33304c82edf9a431cd74d79792 (patch)
treedbd6c32f79e82d41bd2f4292251dc3688d3bb152 /libc-parts/process-spawn.c
parentd12752e70f58172c21a03f27ffe29fd6392e3adf (diff)
2008-06-07 Neal H. Walfield <neal@gnu.org>
* process-spawn.c (process_spawn): When allocating a folio, only update the shadow capability's type after the folio has actually been allocated.
Diffstat (limited to 'libc-parts/process-spawn.c')
-rw-r--r--libc-parts/process-spawn.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libc-parts/process-spawn.c b/libc-parts/process-spawn.c
index 52560d8..6cb089f 100644
--- a/libc-parts/process-spawn.c
+++ b/libc-parts/process-spawn.c
@@ -345,15 +345,17 @@ process_spawn (addr_t activity,
if (ADDR_IS_VOID (folio_local_addr))
panic ("Failed to allocate address space for folio");
- as_ensure_use (folio_local_addr,
- ({
- slot->type = cap_folio;
- }));
+ as_ensure (folio_local_addr);
error_t err = rm_folio_alloc (activity, folio_local_addr,
FOLIO_POLICY_DEFAULT);
if (err)
panic ("Failed to allocate folio");
+
+ as_slot_lookup_use (folio_local_addr,
+ ({
+ slot->type = cap_folio;
+ }));
#endif
folio_index = 0;