[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/5] linux-user: handle /proc/self/exe for execve
From: |
Takashi Yamamoto |
Subject: |
Re: [PATCH 1/5] linux-user: handle /proc/self/exe for execve |
Date: |
Tue, 25 May 2021 07:54:22 +0900 |
On Mon, May 24, 2021 at 7:53 PM Alex Bennée <alex.bennee@linaro.org> wrote:
>
>
> YAMAMOTO Takashi <yamamoto@midokura.com> writes:
>
> > It seems somehow common to execve /proc/self/exe in docker
> > or golang community these days.
> > At least, moby "reexec" and runc "libcontainer" do that.
> >
> > Signed-off-by: YAMAMOTO Takashi <yamamoto@midokura.com>
> > ---
> > linux-user/syscall.c | 7 ++++++-
> > 1 file changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> > index c9f812091c..a2b03ecb8b 100644
> > --- a/linux-user/syscall.c
> > +++ b/linux-user/syscall.c
> > @@ -8470,6 +8470,7 @@ static abi_long do_syscall1(void *cpu_env, int num,
> > abi_long arg1,
> > #endif
> > case TARGET_NR_execve:
> > {
> > + const char *path;
> > char **argp, **envp;
> > int argc, envc;
> > abi_ulong gp;
> > @@ -8537,7 +8538,11 @@ static abi_long do_syscall1(void *cpu_env, int num,
> > abi_long arg1,
> > * before the execve completes and makes it the other
> > * program's problem.
> > */
> > - ret = get_errno(safe_execve(p, argp, envp));
> > + path = p;
> > + if (is_proc_myself(path, "exe")) {
> > + path = exec_path;
> > + }
>
> This still relies on binfmt_misc kicking in to ensure the binary is
> re-executed with qemu right?
right.
>
> > + ret = get_errno(safe_execve(path, argp, envp));
> > unlock_user(p, arg1, 0);
> >
> > goto execve_end;
>
>
> --
> Alex Bennée
- [PATCH 0/5] linux-user changes to run docker, YAMAMOTO Takashi, 2021/05/24
- [PATCH 1/5] linux-user: handle /proc/self/exe for execve, YAMAMOTO Takashi, 2021/05/24
- [PATCH 3/5] linux-user: Fix the execfd case of /proc/self/exe open, YAMAMOTO Takashi, 2021/05/24
- [PATCH 4/5] linux-user: dup the execfd on start up, YAMAMOTO Takashi, 2021/05/24
- [PATCH 5/5] linux-user: Implement pivot_root, YAMAMOTO Takashi, 2021/05/24
- Re: [PATCH 0/5] linux-user changes to run docker, Alex Bennée, 2021/05/24