# git rev-parse -q --verify 4da9af0014b51c8b015ed8c622440ef28912efe6^{commit} # git fetch -q -n -f git://fs.ozlabs.ibm.com/kernel/linus master warning: The last gc run reported the following. Please correct the root cause and remove .git/gc.log. Automatic cleanup will not be performed until the file is removed. warning: There are too many unreachable loose objects; run 'git prune' to remove them. # git rev-parse -q --verify 4da9af0014b51c8b015ed8c622440ef28912efe6^{commit} 4da9af0014b51c8b015ed8c622440ef28912efe6 # git checkout -q -f -B kisskb 4da9af0014b51c8b015ed8c622440ef28912efe6 # git clean -qxdf # < git log -1 # commit 4da9af0014b51c8b015ed8c622440ef28912efe6 # Merge: 612e7a4c1645 01361b665a26 # Author: Linus Torvalds # Date: Wed Oct 14 14:39:20 2020 -0700 # # Merge tag 'threads-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux # # Pull pidfd updates from Christian Brauner: # "This introduces a new extension to the pidfd_open() syscall. Users can # now raise the new PIDFD_NONBLOCK flag to support non-blocking pidfd # file descriptors. This has been requested for uses in async process # management libraries such as async-pidfd in Rust. # # Ever since the introduction of pidfds and more advanced async io # various programming languages such as Rust have grown support for # async event libraries. These libraries are created to help build # epoll-based event loops around file descriptors. A common pattern is # to automatically make all file descriptors they manage to O_NONBLOCK. # # For such libraries the EAGAIN error code is treated specially. When a # function is called that returns EAGAIN the function isn't called again # until the event loop indicates the the file descriptor is ready. # Supporting EAGAIN when waiting on pidfds makes such libraries just # work with little effort. # # This introduces a new flag PIDFD_NONBLOCK that is equivalent to # O_NONBLOCK. This follows the same patterns we have for other (anon # inode) file descriptors such as EFD_NONBLOCK, IN_NONBLOCK, # SFD_NONBLOCK, TFD_NONBLOCK and the same for close-on-exec flags. # # Passing a non-blocking pidfd to waitid() currently has no effect, i.e. # is not supported. There are users which would like to use waitid() on # pidfds that are O_NONBLOCK and mix it with pidfds that are blocking # and both pass them to waitid(). # # The expected behavior is to have waitid() return -EAGAIN for # non-blocking pidfds and to block for blocking pidfds without needing # to perform any additional checks for flags set on the pidfd before # passing it to waitid(). Non-blocking pidfds will return EAGAIN from # waitid() when no child process is ready yet. Returning -EAGAIN for # non-blocking pidfds makes it easier for event loops that handle EAGAIN # specially. # # It also makes the API more consistent and uniform. In essence, # waitid() is treated like a read on a non-blocking pidfd or a recvmsg() # on a non-blocking socket. # # With the addition of support for non-blocking pidfds we support the # same functionality that sockets do. For sockets() recvmsg() supports # MSG_DONTWAIT for pidfds waitid() supports WNOHANG. Both flags are # per-call options. In contrast non-blocking pidfds and non-blocking # sockets are a setting on an open file description affecting all # threads in the calling process as well as other processes that hold # file descriptors referring to the same open file description. Both # behaviors, per call and per open file description, have genuine # use-cases. # # The interaction with the WNOHANG flag is documented as follows: # # - If a non-blocking pidfd is passed and WNOHANG is not raised we # simply raise the WNOHANG flag internally. When do_wait() returns # indicating that there are eligible child processes but none have # exited yet we set EAGAIN. If no child process exists we continue # returning ECHILD. # # - If a non-blocking pidfd is passed and WNOHANG is raised waitid() # will continue returning 0, i.e. it will not set EAGAIN. This ensure # backwards compatibility with applications passing WNOHANG # explicitly with pidfds" # # * tag 'threads-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux: # tests: remove O_NONBLOCK before waiting for WSTOPPED # tests: add waitid() tests for non-blocking pidfds # tests: port pidfd_wait to kselftest harness # pidfd: support PIDFD_NONBLOCK in pidfd_open() # exit: support non-blocking pidfds # < /opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 4da9af0014b51c8b015ed8c622440ef28912efe6 # < make -s -j 8 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- randconfig KCONFIG_SEED=0x6FCB9E1C # Added to kconfig CONFIG_STANDALONE=y # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_CPU_BIG_ENDIAN=y # Added to kconfig CONFIG_PPC64=y # Added to kconfig CONFIG_PPC_DISABLE_WERROR=y # Added to kconfig CONFIG_SECTION_MISMATCH_WARN_ONLY=y # Added to kconfig CONFIG_PREVENT_FIRMWARE_BUILD=y # Added to kconfig CONFIG_CC_STACKPROTECTOR_STRONG=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig CONFIG_LD_HEAD_STUB_CATCH=y # Added to kconfig CONFIG_TRIM_UNUSED_KSYMS=n # Added to kconfig CONFIG_UBSAN=n # < make -s -j 8 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 8 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig .config:4718:warning: override: reassigning to symbol PPC_DISABLE_WERROR .config:4720:warning: override: reassigning to symbol PREVENT_FIRMWARE_BUILD .config:4723:warning: override: reassigning to symbol LD_HEAD_STUB_CATCH .config:4725:warning: override: reassigning to symbol UBSAN # make -s -j 8 ARCH=powerpc O=/kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-9.2.0-nolibc/powerpc64-linux/bin/powerpc64-linux- Completed OK # rm -rf /kisskb/build/linus-rand_powerpc-randconfig_powerpc-gcc9 # Build took: 0:06:50.136095