# git rev-parse -q --verify 26bc672134241a080a83b2ab9aa8abede8d30e1c^{commit} 26bc672134241a080a83b2ab9aa8abede8d30e1c already have revision, skipping fetch # git checkout -q -f -B kisskb 26bc672134241a080a83b2ab9aa8abede8d30e1c # git clean -qxdf # < git log -1 # commit 26bc672134241a080a83b2ab9aa8abede8d30e1c # Merge: 7111fa1151e3 fa729c4df558 # Author: Linus Torvalds # Date: Tue Nov 5 09:44:02 2019 -0800 # # Merge tag 'for-linus-2019-11-05' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux # # Pull clone3 stack argument update from Christian Brauner: # "This changes clone3() to do basic stack validation and to set up the # stack depending on whether or not it is growing up or down. # # With clone3() the expectation is now very simply that the .stack # argument points to the lowest address of the stack and that # .stack_size specifies the initial stack size. This is diferent from # legacy clone() where the "stack" argument had to point to the lowest # or highest address of the stack depending on the architecture. # # clone3() was released with 5.3. Currently, it is not documented and # very unclear to userspace how the stack and stack_size argument have # to be passed. After talking to glibc folks we concluded that changing # clone3() to determine stack direction and doing basic validation is # the right course of action. # # Note, this is a potentially user visible change. In the very unlikely # case, that it breaks someone's use-case we will revert. (And then e.g. # place the new behavior under an appropriate flag.) # # Note that passing an empty stack will continue working just as before. # Breaking someone's use-case is very unlikely. Neither glibc nor musl # currently expose a wrapper for clone3(). There is currently also no # real motivation for anyone to use clone3() directly. First, because # using clone{3}() with stacks requires some assembly (see glibc and # musl). Second, because it does not provide features that legacy # clone() doesn't. New features for clone3() will first happen in v5.5 # which is why v5.4 is still a good time to try and make that change now # and backport it to v5.3. # # I did a codesearch on https://codesearch.debian.net, github, and # gitlab and could not find any software currently relying directly on # clone3(). I expect this to change once we land CLONE_CLEAR_SIGHAND # which was a request coming from glibc at which point they'll likely # start using it" # # * tag 'for-linus-2019-11-05' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux: # clone3: validate stack arguments # < /opt/cross/kisskb/fe-x86-64-core-i7-2017.05/bin/x86_64-linux-gcc --version # < /opt/cross/kisskb/fe-x86-64-core-i7-2017.05/bin/x86_64-linux-ld --version # < git log --format=%s --max-count=1 26bc672134241a080a83b2ab9aa8abede8d30e1c # < make -s -j 24 ARCH=um O=/kisskb/build/linus_um-allmodconfig_um-x86_64 CROSS_COMPILE=/opt/cross/kisskb/fe-x86-64-core-i7-2017.05/bin/x86_64-linux- SUBARCH=x86_64 allmodconfig # Added to kconfig CONFIG_STANDALONE=y # Added to kconfig CONFIG_KCOV=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig CONFIG_GCC_PLUGIN_CYC_COMPLEXITY=n # Added to kconfig CONFIG_GCC_PLUGIN_SANCOV=n # Added to kconfig CONFIG_GCC_PLUGIN_LATENT_ENTROPY=n # Added to kconfig CONFIG_GCC_PLUGIN_STRUCTLEAK=n # Added to kconfig CONFIG_GCC_PLUGIN_RANDSTRUCT=n # Added to kconfig CONFIG_UML_NET=n # Added to kconfig CONFIG_UML_NET_ETHERTAP=n # Added to kconfig CONFIG_UML_NET_TUNTAP=n # Added to kconfig CONFIG_UML_NET_SLIP=n # Added to kconfig CONFIG_UML_NET_DAEMON=n # Added to kconfig CONFIG_UML_NET_VDE=n # Added to kconfig CONFIG_UML_NET_MCAST=n # Added to kconfig CONFIG_UML_NET_PCAP=n # Added to kconfig CONFIG_UML_NET_SLIRP=n # Added to kconfig CONFIG_GCOV_KERNEL=n # yes \n | make -s -j 24 ARCH=um O=/kisskb/build/linus_um-allmodconfig_um-x86_64 CROSS_COMPILE=/opt/cross/kisskb/fe-x86-64-core-i7-2017.05/bin/x86_64-linux- SUBARCH=x86_64 oldconfig yes: standard output: Broken pipe # make -s -j 24 ARCH=um O=/kisskb/build/linus_um-allmodconfig_um-x86_64 CROSS_COMPILE=/opt/cross/kisskb/fe-x86-64-core-i7-2017.05/bin/x86_64-linux- SUBARCH=x86_64 /kisskb/src/arch/um/os-Linux/signal.c: In function 'sig_handler_common': /kisskb/src/arch/um/os-Linux/signal.c:51:1: warning: the frame size of 2976 bytes is larger than 2048 bytes [-Wframe-larger-than=] } ^ /kisskb/src/arch/um/os-Linux/signal.c: In function 'timer_real_alarm_handler': /kisskb/src/arch/um/os-Linux/signal.c:95:1: warning: the frame size of 2960 bytes is larger than 2048 bytes [-Wframe-larger-than=] } ^ /kisskb/src/security/apparmor/policy_unpack.c: In function 'unpack_profile': /kisskb/src/security/apparmor/policy_unpack.c:523:9: warning: 'pos' may be used uninitialized in this function [-Wmaybe-uninitialized] str[pos] = ':'; ^ /kisskb/src/security/apparmor/policy_unpack.c:494:14: note: 'pos' was declared here int c, j, pos, size2 = unpack_strdup(e, &str, NULL); ^ /kisskb/src/lib/lz4/lz4hc_compress.c: In function 'LZ4HC_compress_generic': /kisskb/src/lib/lz4/lz4hc_compress.c:579:1: warning: the frame size of 2144 bytes is larger than 2048 bytes [-Wframe-larger-than=] } ^ /kisskb/src/drivers/misc/lkdtm/bugs.c: In function 'lkdtm_UNSET_SMEP': /kisskb/src/drivers/misc/lkdtm/bugs.c:284:8: error: implicit declaration of function 'native_read_cr4' [-Werror=implicit-function-declaration] cr4 = native_read_cr4(); ^ /kisskb/src/drivers/misc/lkdtm/bugs.c:286:13: error: 'X86_CR4_SMEP' undeclared (first use in this function) if ((cr4 & X86_CR4_SMEP) != X86_CR4_SMEP) { ^ /kisskb/src/drivers/misc/lkdtm/bugs.c:286:13: note: each undeclared identifier is reported only once for each function it appears in /kisskb/src/drivers/misc/lkdtm/bugs.c:293:2: error: implicit declaration of function 'native_write_cr4' [-Werror=implicit-function-declaration] native_write_cr4(cr4); ^ cc1: some warnings being treated as errors make[4]: *** [/kisskb/src/scripts/Makefile.build:265: drivers/misc/lkdtm/bugs.o] Error 1 make[3]: *** [/kisskb/src/scripts/Makefile.build:509: drivers/misc/lkdtm] Error 2 make[2]: *** [/kisskb/src/scripts/Makefile.build:509: drivers/misc] Error 2 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [/kisskb/src/Makefile:1649: drivers] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:179: sub-make] Error 2 Command 'make -s -j 24 ARCH=um O=/kisskb/build/linus_um-allmodconfig_um-x86_64 CROSS_COMPILE=/opt/cross/kisskb/fe-x86-64-core-i7-2017.05/bin/x86_64-linux- SUBARCH=x86_64 ' returned non-zero exit status 2 # rm -rf /kisskb/build/linus_um-allmodconfig_um-x86_64 # Build took: 0:06:17.783298