From ab2e7968332efa23f75bf68ee6b04a66c2ba6c72 Mon Sep 17 00:00:00 2001 From: Jeremie Koenig Date: Sun, 1 Aug 2010 02:48:02 +0200 Subject: Fix libdiskfs bootstrap race condition exec_exec() probably triggers a call to file_exec(), so the exec server port needs to be cached earlier. * libdiskfs/boot-start.c: Move caching the exec server port to just after initializing it. --- libdiskfs/boot-start.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libdiskfs') diff --git a/libdiskfs/boot-start.c b/libdiskfs/boot-start.c index ad3cf1a4..e73e4d37 100644 --- a/libdiskfs/boot-start.c +++ b/libdiskfs/boot-start.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1993,94,95,96,97,98,99,2000,01,02 + Copyright (C) 1993,94,95,96,97,98,99,2000,01,02,10 Free Software Foundation, Inc. This file is part of the GNU Hurd. @@ -194,6 +194,9 @@ diskfs_start_bootstrap () diskfs_exec_ctl = MACH_PORT_NULL; /* Not used after this. */ } + /* Cache the exec server port for file_exec to use. */ + _hurd_port_set (&_diskfs_exec_portcell, diskfs_exec); + if (_diskfs_boot_command) { /* We have a boot command line to run instead of init. */ @@ -276,9 +279,6 @@ diskfs_start_bootstrap () mach_port_deallocate (mach_task_self (), startup_pt); mach_port_deallocate (mach_task_self (), bootpt); assert_perror (err); - - /* Cache the exec server port for file_exec to use. */ - _hurd_port_set (&_diskfs_exec_portcell, diskfs_exec); } /* We look like an execserver to the execserver itself; it makes this -- cgit v1.2.3