# git rev-parse -q --verify 4da9af0014b51c8b015ed8c622440ef28912efe6^{commit} # git fetch -q -n -f git://fs.ozlabs.ibm.com/kernel/linus master # 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-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux-ld --version # < git log --format=%s --max-count=1 4da9af0014b51c8b015ed8c622440ef28912efe6 # < make -s -j 24 ARCH=arm64 O=/kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux- randconfig KCONFIG_SEED=0x90E2D2F0 # Added to kconfig CONFIG_PREVENT_FIRMWARE_BUILD=y # < make -s -j 24 ARCH=arm64 O=/kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux- help # make -s -j 24 ARCH=arm64 O=/kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux- olddefconfig # make -s -j 24 ARCH=arm64 O=/kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux- /kisskb/src/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi:7.3-14: Warning (dma_ranges_format): /usb:dma-ranges: empty "dma-ranges" property but its #address-cells (1) differs from / (2) /kisskb/src/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi:7.3-14: Warning (dma_ranges_format): /usb:dma-ranges: empty "dma-ranges" property but its #size-cells (1) differs from / (2) /kisskb/src/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi:7.3-14: Warning (dma_ranges_format): /usb:dma-ranges: empty "dma-ranges" property but its #address-cells (1) differs from / (2) /kisskb/src/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi:7.3-14: Warning (dma_ranges_format): /usb:dma-ranges: empty "dma-ranges" property but its #size-cells (1) differs from / (2) /kisskb/src/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi:7.3-14: Warning (dma_ranges_format): /usb:dma-ranges: empty "dma-ranges" property but its #address-cells (1) differs from / (2) /kisskb/src/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi:7.3-14: Warning (dma_ranges_format): /usb:dma-ranges: empty "dma-ranges" property but its #size-cells (1) differs from / (2) /kisskb/src/arch/arm64/boot/dts/qcom/ipq6018.dtsi:127.3-14: Warning (dma_ranges_format): /soc:dma-ranges: empty "dma-ranges" property but its #address-cells (1) differs from / (2) /kisskb/src/arch/arm64/boot/dts/qcom/ipq6018.dtsi:127.3-14: Warning (dma_ranges_format): /soc:dma-ranges: empty "dma-ranges" property but its #size-cells (1) differs from / (2) /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux-ld: warning: orphan section `.eh_frame' from `kernel/bpf/core.o' being placed in section `.eh_frame'. /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux-ld: warning: orphan section `.eh_frame' from `kernel/bpf/core.o' being placed in section `.eh_frame'. /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux-ld: warning: orphan section `.eh_frame' from `kernel/bpf/core.o' being placed in section `.eh_frame'. Completed OK # rm -rf /kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 # Build took: 0:07:16.715158