summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc-parts/ChangeLog6
-rw-r--r--libc-parts/process-spawn.c10
2 files changed, 12 insertions, 4 deletions
diff --git a/libc-parts/ChangeLog b/libc-parts/ChangeLog
index 67d6fb5..deb95f2 100644
--- a/libc-parts/ChangeLog
+++ b/libc-parts/ChangeLog
@@ -1,3 +1,9 @@
+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.
+
2008-06-05 Neal H. Walfield <neal@gnu.org>
* process-spawn.c (as_insert_custom): Replace use of as_insert
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;