• Linus Torvalds's avatar
    Merge tag 'pidfd-v5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux · eac7078a
    Linus Torvalds authored
    Pull pidfd updates from Christian Brauner:
     "This patchset makes it possible to retrieve pidfds at process creation
      time by introducing the new flag CLONE_PIDFD to the clone() system
      call. Linus originally suggested to implement this as a new flag to
      clone() instead of making it a separate system call.
    
      After a thorough review from Oleg CLONE_PIDFD returns pidfds in the
      parent_tidptr argument. This means we can give back the associated pid
      and the pidfd at the same time. Access to process metadata information
      thus becomes rather trivial.
    
      As has been agreed, CLONE_PIDFD creates file descriptors based on
      anonymous inodes similar to the new mount api. They are made
      unconditional by this patchset as they are now needed by core kernel
      code (vfs, pidfd) even more than they already were before (timerfd,
      signalfd, io_uring, epoll etc.). The core patchset is rather small.
      The bulky looking changelist is caused by David's very simple changes
      to Kconfig to make anon inodes unconditional.
    
      A pidfd comes with additional information in fdinfo if the kernel
      supports procfs. The fdinfo file contains the pid of the process in
      the callers pid namespace in the same format as the procfs status
      file, i.e. "Pid:\t%d".
    
      To remove worries about missing metadata access this patchset comes
      with a sample/test program that illustrates how a combination of
      CLONE_PIDFD and pidfd_send_signal() can be used to gain race-free
      access to process metadata through /proc/<pid>.
    
      Further work based on this patchset has been done by Joel. His work
      makes pidfds pollable. It finished too late for this merge window. I
      would prefer to have it sitting in linux-next for a while and send it
      for inclusion during the 5.3 merge window"
    
    * tag 'pidfd-v5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
      samples: show race-free pidfd metadata access
      signal: support CLONE_PIDFD with pidfd_send_signal
      clone: add CLONE_PIDFD
      Make anon_inodes unconditional
    eac7078a
fork.c 66.1 KB