[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 0/5] linux-user: Support extended clone(CLONE_VM)
From: |
Alex Bennée |
Subject: |
Re: [PATCH 0/5] linux-user: Support extended clone(CLONE_VM) |
Date: |
Sat, 13 Jun 2020 12:16:49 +0100 |
User-agent: |
mu4e 1.5.2; emacs 28.0.50 |
Josh Kunz <jkz@google.com> writes:
> This patch series implements extended support for the `clone` system
> call. As best I can tell, any option combination including `CLONE_VM`
> should be supported with the addition of this patch series. The
> implementation is described in greater detail in the patches themselves.
>
> Testing:
>
> * All targets built on x86_64.
> * `make check` and `make check-tcg` are passing. Additional tests have
> been added to `linux-test.c` to validate clone behavior.
>
> Caveats:
>
> * This series touches, but does not fix, several bits of code that are
> racey (namely the sigact table and the fd trans table).
> * `exit_group` does not perform the appropriate cleanup for non-thread
> children created with `CLONE_VM`. CPUs for such children are never
> cleaned up. The correct implementation of exit-group is non-trivial
> (since it also needs to track/handle cleanup for threads in the
> clone'd child process). Also, I don't fully understand the
> interaction between QOM<->linux-user.
When the QOM object gets unrefed for the final time it should cause a
bunch of clean-up in the common vCPU management code where things like
plugin cleanup are done.
This was recently touched in 1f81ce90e31ef338ee53a0cea02344237bc470cc
where I removed linux-user messing around with the active cpu list and
left it to the core code to deal with. Previously it wasn't being
properly unrealized.
> My naive implementation based
> on the current implementation `exit(2)` was regularly crashing. If
> maintainers have suggestions for better ways to handle exit_group,
> they would be greatly appreciated.
> * execve does not clean up the CPUs of clone'd children, for the same
> reasons as `exit_group`.
>
> Josh Kunz (5):
> linux-user: Refactor do_fork to use new `qemu_clone`
> linux-user: Make fd_trans task-specific.
> linux-user: Make sigact_table part of the task state.
> linux-user: Support CLONE_VM and extended clone options
> linux-user: Add PDEATHSIG test for clone process hierarchy.
>
> linux-user/Makefile.objs | 2 +-
> linux-user/clone.c | 565 ++++++++++++++++++++++++++++
> linux-user/clone.h | 27 ++
> linux-user/fd-trans-tbl.c | 13 +
> linux-user/fd-trans-type.h | 17 +
> linux-user/fd-trans.c | 3 -
> linux-user/fd-trans.h | 75 ++--
> linux-user/main.c | 1 +
> linux-user/qemu.h | 49 +++
> linux-user/signal.c | 84 ++++-
> linux-user/syscall.c | 452 ++++++++++++----------
> tests/tcg/multiarch/Makefile.target | 3 +
> tests/tcg/multiarch/linux-test.c | 227 ++++++++++-
> 13 files changed, 1264 insertions(+), 254 deletions(-)
> create mode 100644 linux-user/clone.c
> create mode 100644 linux-user/clone.h
> create mode 100644 linux-user/fd-trans-tbl.c
> create mode 100644 linux-user/fd-trans-type.h
--
Alex Bennée
- [PATCH 0/5] linux-user: Support extended clone(CLONE_VM), Josh Kunz, 2020/06/11
- [PATCH 1/5] linux-user: Refactor do_fork to use new `qemu_clone`, Josh Kunz, 2020/06/11
- [PATCH 2/5] linux-user: Make fd_trans task-specific., Josh Kunz, 2020/06/11
- [PATCH 3/5] linux-user: Make sigact_table part of the task state., Josh Kunz, 2020/06/11
- [PATCH 4/5] linux-user: Support CLONE_VM and extended clone options, Josh Kunz, 2020/06/11
- [PATCH 5/5] linux-user: Add PDEATHSIG test for clone process hierarchy., Josh Kunz, 2020/06/11
- Re: [PATCH 0/5] linux-user: Support extended clone(CLONE_VM), no-reply, 2020/06/11
- Re: [PATCH 0/5] linux-user: Support extended clone(CLONE_VM),
Alex Bennée <=
- Re: [PATCH 0/5] linux-user: Support extended clone(CLONE_VM), Alex Bennée, 2020/06/16