aboutsummaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
Diffstat (limited to 'hurd')
-rw-r--r--hurd/hurdinit.c20
-rw-r--r--hurd/hurdstartup.c8
2 files changed, 8 insertions, 20 deletions
diff --git a/hurd/hurdinit.c b/hurd/hurdinit.c
index bc2334e69f..1704fa8879 100644
--- a/hurd/hurdinit.c
+++ b/hurd/hurdinit.c
@@ -203,23 +203,3 @@ _hurd_setproc (process_t procserver)
return 0;
}
-
-/* Map the page at address zero with no access allowed, so
- dereferencing NULL will fault and no "anywhere" allocations
- (e.g. the out of line memory containing the argument strings)
- can be assigned address zero, which C says is not a valid pointer.
-
- When dynamically linked, this should be done by the dynamic linker
- before we run, but failing is harmless and we ignore the error. */
-
-static void map0 (void) __attribute__ ((unused));
-text_set_element (_hurd_preinit_hook, map0);
-
-static void
-map0 (void)
-{
- vm_address_t addr = 0;
- __vm_map (__mach_task_self (),
- &addr, __vm_page_size, 0, 0, MACH_PORT_NULL, 0, 1,
- VM_PROT_NONE, VM_PROT_NONE, VM_INHERIT_COPY);
-}
diff --git a/hurd/hurdstartup.c b/hurd/hurdstartup.c
index 17a7705847..cd6922fd2a 100644
--- a/hurd/hurdstartup.c
+++ b/hurd/hurdstartup.c
@@ -75,6 +75,14 @@ _hurd_startup (void **argptr, void (*main) (int *data))
char **argv, **envp;
int argc, envc;
int *argcptr;
+ vm_address_t addr;
+
+ /* Attempt to map page zero redzoned before we receive any RPC
+ data that might get allocated there. We can ignore errors. */
+ addr = 0;
+ __vm_map (__mach_task_self (),
+ &addr, __vm_page_size, 0, 0, MACH_PORT_NULL, 0, 1,
+ VM_PROT_NONE, VM_PROT_NONE, VM_INHERIT_COPY);
if (err = __task_get_special_port (__mach_task_self (), TASK_BOOTSTRAP_PORT,
&in_bootstrap))