bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/2] machdev: Fix parent proc passthrough in fsys_init


From: Samuel Thibault
Subject: Re: [PATCH 1/2] machdev: Fix parent proc passthrough in fsys_init
Date: Sat, 20 Mar 2021 00:03:31 +0100
User-agent: NeoMutt/20170609 (1.8.3)

Applied, thanks!

Damien Zammit, le ven. 19 mars 2021 13:15:11 +1100, a ecrit:
> ---
>  libmachdev/trivfs_server.c | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/libmachdev/trivfs_server.c b/libmachdev/trivfs_server.c
> index 607166f9..60711348 100644
> --- a/libmachdev/trivfs_server.c
> +++ b/libmachdev/trivfs_server.c
> @@ -79,6 +79,9 @@ struct port_class *machdev_shutdown_notify_class;
>  
>  static void arrange_shutdown_notification (void);
>  
> +/* Our parent's task, if applicable */
> +static task_t parent_task;
> +
>  static void
>  install_as_translator (mach_port_t bootport)
>  {
> @@ -284,13 +287,16 @@ trivfs_S_fsys_init (struct trivfs_control *fsys,
>    retry_type retry;
>    string_t retry_name;
>    mach_port_t right = MACH_PORT_NULL;
> -  process_t proc;
> +  process_t proc, parent_proc;
>  
>    /* Traverse to the bootstrapping server first */
>    task_get_bootstrap_port (mach_task_self (), &bootstrap);
>    if (bootstrap)
>      {
> -      err = fsys_init (bootstrap, procserver, MACH_MSG_TYPE_COPY_SEND, 
> authhandle);
> +
> +      err = proc_task2proc (procserver, parent_task, &parent_proc);
> +      assert_perror_backtrace (err);
> +      err = fsys_init (bootstrap, parent_proc, MACH_MSG_TYPE_COPY_SEND, 
> authhandle);
>        assert_perror_backtrace (err);
>      }
>    err = fsys_getroot (control_port, MACH_PORT_NULL, MACH_MSG_TYPE_COPY_SEND,
> @@ -315,10 +321,12 @@ trivfs_S_fsys_init (struct trivfs_control *fsys,
>    proc = getproc ();
>    assert_backtrace (proc);
>    err = proc_mark_important (proc);
> -  assert_perror_backtrace (err);
> +  if (err && err != EPERM)
> +    assert_perror_backtrace (err);
>    err = proc_mark_exec (proc);
>    assert_perror_backtrace (err);
> -  proc_set_exe (proc, program_invocation_short_name);
> +  err = proc_set_exe (proc, program_invocation_short_name);
> +  assert_perror_backtrace (err);
>    mach_port_deallocate (mach_task_self (), proc);
>  
>    if (bootstrapping)
> @@ -430,7 +438,6 @@ machdev_trivfs_init(mach_port_t bootstrap_resume_task, 
> const char *name, const c
>                      mach_port_t *bootstrap)
>  {
>    mach_port_t mybootstrap = MACH_PORT_NULL;
> -  task_t parent_task;
>    port_bucket = ports_create_bucket ();
>    trivfs_cntl_class = ports_create_class (trivfs_clean_cntl, 0);
>    trivfs_protid_class = ports_create_class (trivfs_clean_protid, 0);
> -- 
> 2.30.1
> 
> 

-- 
Samuel
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and
the Ugly)."
(By Matt Welsh)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]