The first patch allows to join pid namespace before pid namespace init is created, that allows to create pid namespace by one process and then create pid namespace init from another process after setns(). Please see the detailed description in the patch commit message.
The second patch is a comprehansive test, which tests both basic usecase of creating pid namespace and init separately, and a more specific usecase which shows how we can improve clone3(set_tid) usability after this change. This is generally useful as it makes clone3(set_tid) more universal, and work in all the cases evenly. Also is highly useful to CRIU to handle nested containers. This series is also available here: https://github.com/Snorch/linux/commits/allow-creating-pid-namespace-init-after-setns/ Signed-off-by: Pavel Tikhomirov <[email protected]> Pavel Tikhomirov (2): pid_namespace: allow opening pid_for_children before init was created selftests: Add tests for creating pidns init via setns kernel/pid.c | 10 +- kernel/pid_namespace.c | 9 - .../selftests/pid_namespace/.gitignore | 1 + .../testing/selftests/pid_namespace/Makefile | 2 +- .../pid_namespace/pidns_init_via_setns.c | 238 ++++++++++++++++++ 5 files changed, 249 insertions(+), 11 deletions(-) create mode 100644 tools/testing/selftests/pid_namespace/pidns_init_via_setns.c -- 2.53.0

