From 5ee0291b5d305f6742dc9fffaa1341427eab0056 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Tue, 28 Jul 2020 20:08:34 +1000 Subject: diskfs: Add RPC for fsys_init to bootstrap if present Message-Id: <20200728100837.224336-1-damien@zamaudio.com> --- libdiskfs/boot-start.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libdiskfs/boot-start.c b/libdiskfs/boot-start.c index 29b8acc6..fa59e1b2 100644 --- a/libdiskfs/boot-start.c +++ b/libdiskfs/boot-start.c @@ -518,7 +518,9 @@ diskfs_S_fsys_init (struct diskfs_control *pt, if (diskfs_exec_server_task != MACH_PORT_NULL) { + mach_port_t bootstrap; process_t execprocess; + err = proc_task2proc (procserver, diskfs_exec_server_task, &execprocess); assert_perror_backtrace (err); @@ -533,6 +535,17 @@ diskfs_S_fsys_init (struct diskfs_control *pt, execprocess, MACH_MSG_TYPE_COPY_SEND)); mach_port_deallocate (mach_task_self (), execprocess); + /* Give the real bootstrap filesystem an fsys_init RPC of its own */ + err = task_get_bootstrap_port (mach_task_self (), &bootstrap); + assert_perror_backtrace (err); + if (bootstrap != MACH_PORT_NULL) + { + err = fsys_init (bootstrap, procserver, MACH_MSG_TYPE_COPY_SEND, + authhandle); + mach_port_deallocate (mach_task_self (), bootstrap); + assert_perror_backtrace (err); + } + /* We don't need this anymore. */ mach_port_deallocate (mach_task_self (), diskfs_exec_server_task); diskfs_exec_server_task = MACH_PORT_NULL; -- cgit v1.2.3