From e27425e63392683b85101961489a83e0abef133b Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Fri, 4 Apr 2014 18:17:54 +0200 Subject: libdiskfs: fix receiver lookup * libdiskfs/Makefile (exec_startup-MIGSFLAGS): New variable. * libdiskfs/diskfs.h (struct bootinfo): New struct declaration. (diskfs_begin_using_bootinfo_port): New function. (diskfs_end_using_bootinfo): Likewise. * libdiskfs/fsmutations.h: Add mutators for exec_startup_t. * libdiskfs/priv.h (bootinfo_t): New type declaration to appease mig. * libdiskfs/boot-start.c (S_exec_startup_get_info): Fix receiver lookup. --- libdiskfs/boot-start.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'libdiskfs/boot-start.c') diff --git a/libdiskfs/boot-start.c b/libdiskfs/boot-start.c index 7b8a84f5..9dd2751f 100644 --- a/libdiskfs/boot-start.c +++ b/libdiskfs/boot-start.c @@ -299,7 +299,7 @@ diskfs_start_bootstrap () call (as does any task) to get its state. We can't give it all of its ports (we'll provide those with a later call to exec_init). */ kern_return_t -diskfs_S_exec_startup_get_info (mach_port_t port, +diskfs_S_exec_startup_get_info (struct bootinfo *upt, vm_address_t *user_entry, vm_address_t *phdr_data, vm_size_t *phdr_size, @@ -322,12 +322,10 @@ diskfs_S_exec_startup_get_info (mach_port_t port, error_t err; mach_port_t *portarray, *dtable; mach_port_t rootport; - struct ufsport *upt; struct protid *rootpi; struct peropen *rootpo; - if (!(upt = ports_lookup_port (diskfs_port_bucket, port, - diskfs_execboot_class))) + if (! upt) return EOPNOTSUPP; *user_entry = 0; @@ -368,13 +366,12 @@ diskfs_S_exec_startup_get_info (mach_port_t port, portarray[INIT_PORT_AUTH] = MACH_PORT_NULL; portarray[INIT_PORT_PROC] = MACH_PORT_NULL; portarray[INIT_PORT_CTTYID] = MACH_PORT_NULL; - portarray[INIT_PORT_BOOTSTRAP] = port; /* use the same port */ + portarray[INIT_PORT_BOOTSTRAP] = upt->pi.port_right; /* use the same port */ *portarraypoly = MACH_MSG_TYPE_MAKE_SEND; *dtablepoly = MACH_MSG_TYPE_COPY_SEND; - ports_port_deref (upt); return 0; } -- cgit v1.2.3