# 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/or1k-linux-5.4.0-20170218/or1k-linux/bin/or1k-linux-gcc --version # < /opt/cross/kisskb/or1k-linux-5.4.0-20170218/or1k-linux/bin/or1k-linux-ld --version # < git log --format=%s --max-count=1 26bc672134241a080a83b2ab9aa8abede8d30e1c # < make -s -j 48 ARCH=openrisc O=/kisskb/build/linus_or1ksim_defconfig_or32 CROSS_COMPILE=/opt/cross/kisskb/or1k-linux-5.4.0-20170218/or1k-linux/bin/or1k-linux- or1ksim_defconfig # make -s -j 48 ARCH=openrisc O=/kisskb/build/linus_or1ksim_defconfig_or32 CROSS_COMPILE=/opt/cross/kisskb/or1k-linux-5.4.0-20170218/or1k-linux/bin/or1k-linux- :1511:2: warning: #warning syscall clone3 not implemented [-Wcpp] Completed OK # rm -rf /kisskb/build/linus_or1ksim_defconfig_or32 # Build took: 0:00:23.359187