• Linus Torvalds's avatar
    Merge tag 'threads-v5.5' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux · 0acefef5
    Linus Torvalds authored
    Pull thread management updates from Christian Brauner:
    
     - A pidfd's fdinfo file currently contains the field "Pid:\t<pid>"
       where <pid> is the pid of the process in the pid namespace of the
       procfs instance the fdinfo file for the pidfd was opened in.
    
       The fdinfo file has now gained a new "NSpid:\t<ns-pid1>[\t<ns-pid2>[...]]"
       field which lists the pids of the process in all child pid namespaces
       provided the pid namespace of the procfs instance it is looked up
       under has an ancestoral relationship with the pid namespace of the
       process. If it does not 0 will be shown and no further pid namespaces
       will be listed. Tests included. (Christian Kellner)
    
     - If the process the pidfd references has already exited, print -1 for
       the Pid and NSpid fields in the pidfd's fdinfo file. Tests included.
       (me)
    
     - Add CLONE_CLEAR_SIGHAND. This lets callers clear all signal handler
       that are not SIG_DFL or SIG_IGN at process creation time. This
       originated as a feature request from glibc to improve performance and
       elimate races in their posix_spawn() implementation. Tests included.
       (me)
    
     - Add support for choosing a specific pid for a process with clone3().
       This is the feature which was part of the thread update for v5.4 but
       after a discussion at LPC in Lisbon we decided to delay it for one
       more cycle in order to make the interface more generic. This has now
       done. It is now possible to choose a specific pid in a whole pid
       namespaces (sub)hierarchy instead of just one pid namespace. In order
       to choose a specific pid the caller must have CAP_SYS_ADMIN in all
       owning user namespaces of the target pid namespaces. Tests included.
       (Adrian Reber)
    
     - Test improvements and extensions. (Andrei Vagin, me)
    
    * tag 'threads-v5.5' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
      selftests/clone3: skip if clone3() is ENOSYS
      selftests/clone3: check that all pids are released on error paths
      selftests/clone3: report a correct number of fails
      selftests/clone3: flush stdout and stderr before clone3() and _exit()
      selftests: add tests for clone3() with *set_tid
      fork: extend clone3() to support setting a PID
      selftests: add tests for clone3()
      tests: test CLONE_CLEAR_SIGHAND
      clone3: add CLONE_CLEAR_SIGHAND
      pid: use pid_has_task() in pidfd_open()
      exit: use pid_has_task() in do_wait()
      pid: use pid_has_task() in __change_pid()
      test: verify fdinfo for pidfd of reaped process
      pidfd: check pid has attached task in fdinfo
      pidfd: add tests for NSpid info in fdinfo
      pidfd: add NSpid entries to fdinfo
    0acefef5
fork.c 73.3 KB