• Linus Torvalds's avatar
    Merge tag 'for-linus-20190715' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux · 3c69914b
    Linus Torvalds authored
    Pull pidfd and clone3 fixes from Christian Brauner:
     "This contains a bugfix for CLONE_PIDFD when used with the legacy clone
      syscall, two fixes to ensure that syscall numbering and clone3
      entrypoint implementations will stay consistent, and an update for the
      maintainers file:
    
       - The addition of clone3 broke CLONE_PIDFD for legacy clone on all
         architectures that use do_fork() directly instead of calling the
         clone syscall itself. (Fwiw, cleaning do_fork() up is on my todo.)
    
         The reason this happened was that during conversion of _do_fork()
         to use struct kernel_clone_args we missed that do_fork() is called
         directly by various architectures. This is fixed by making sure
         that the pidfd argument in struct kernel_clone_args is correctly
         initialized with the parent_tidptr argument passed down from
         do_fork(). Additionally, do_fork() missed a check to make
         CLONE_PIDFD and CLONE_PARENT_SETTID mutually exclusive just a
         clone() does. This is now fixed too.
    
       - When clone3() was introduced we skipped architectures that require
         special handling for fork-like syscalls. Their syscall tables did
         not contain any mention of clone3().
    
         To make sure that Arnd's work to make syscall numbers on all
         architectures identical (minus alpha) was not for naught we are
         placing a comment in all syscall tables that do not yet implement
         clone3(). The comment makes it clear that 435 is reserved for
         clone3 and should not be used.
    
       - Also, this contains a patch to make the clone3() syscall definition
         in asm-generic/unist.h conditional on __ARCH_WANT_SYS_CLONE3. This
         lets us catch new architectures that implicitly make use of clone3
         without setting __ARCH_WANT_SYS_CLONE3 which is a good indicator
         that they did not check whether it needs special treatment or not.
    
       - Finally, this contains a patch to add me as maintainer for pidfd
         stuff so people can start blaming me (more)"
    
    * tag 'for-linus-20190715' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
      MAINTAINERS: add new entry for pidfd api
      unistd: protect clone3 via __ARCH_WANT_SYS_CLONE3
      arch: mark syscall number 435 reserved for clone3
      clone: fix CLONE_PIDFD support
    3c69914b
fork.c 69.5 KB