# git rev-parse -q --verify 06af8679449d4ed282df13191fc52d5ba28ec536^{commit} 06af8679449d4ed282df13191fc52d5ba28ec536 already have revision, skipping fetch # git checkout -q -f -B kisskb 06af8679449d4ed282df13191fc52d5ba28ec536 # git clean -qxdf # < git log -1 # commit 06af8679449d4ed282df13191fc52d5ba28ec536 # Author: Eric W. Biederman # Date: Thu Jun 10 15:11:11 2021 -0500 # # coredump: Limit what can interrupt coredumps # # Olivier Langlois has been struggling with coredumps being incompletely written in # processes using io_uring. # # Olivier Langlois writes: # > io_uring is a big user of task_work and any event that io_uring made a # > task waiting for that occurs during the core dump generation will # > generate a TIF_NOTIFY_SIGNAL. # > # > Here are the detailed steps of the problem: # > 1. io_uring calls vfs_poll() to install a task to a file wait queue # > with io_async_wake() as the wakeup function cb from io_arm_poll_handler() # > 2. wakeup function ends up calling task_work_add() with TWA_SIGNAL # > 3. task_work_add() sets the TIF_NOTIFY_SIGNAL bit by calling # > set_notify_signal() # # The coredump code deliberately supports being interrupted by SIGKILL, # and depends upon prepare_signal to filter out all other signals. Now # that signal_pending includes wake ups for TIF_NOTIFY_SIGNAL this hack # in dump_emitted by the coredump code no longer works. # # Make the coredump code more robust by explicitly testing for all of # the wakeup conditions the coredump code supports. This prevents # new wakeup conditions from breaking the coredump code, as well # as fixing the current issue. # # The filesystem code that the coredump code uses already limits # itself to only aborting on fatal_signal_pending. So it should # not develop surprising wake-up reasons either. # # v2: Don't remove the now unnecessary code in prepare_signal. # # Cc: stable@vger.kernel.org # Fixes: 12db8b690010 ("entry: Add support for TIF_NOTIFY_SIGNAL") # Reported-by: Olivier Langlois # Signed-off-by: "Eric W. Biederman" # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 06af8679449d4ed282df13191fc52d5ba28ec536 # < make -s -j 48 ARCH=powerpc O=/kisskb/build/linus_mpc885_ads_defconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- mpc885_ads_defconfig # < make -s -j 48 ARCH=powerpc O=/kisskb/build/linus_mpc885_ads_defconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 48 ARCH=powerpc O=/kisskb/build/linus_mpc885_ads_defconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig # make -s -j 48 ARCH=powerpc O=/kisskb/build/linus_mpc885_ads_defconfig_powerpc-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/powerpc64-linux/bin/powerpc64-linux- /kisskb/src/net/sched/sch_frag.c: In function 'sch_fragment': /kisskb/src/net/sched/sch_frag.c:93:10: warning: missing braces around initializer [-Wmissing-braces] struct rtable sch_frag_rt = { 0 }; ^ /kisskb/src/net/sched/sch_frag.c:93:10: warning: (near initialization for 'sch_frag_rt.dst') [-Wmissing-braces] INFO: Uncompressed kernel (size 0x42a8d4) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x500000) Image Name: Linux-5.13.0-rc5-113804-g06af867 Created: Sat Jul 17 20:37:07 2021 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 2103007 Bytes = 2053.72 KiB = 2.01 MiB Load Address: 00500000 Entry Point: 00500204 Completed OK # rm -rf /kisskb/build/linus_mpc885_ads_defconfig_powerpc-gcc4.9 # Build took: 0:00:43.130986