# 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/sh4-linux/bin/sh4-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-4.9.4-nolibc/sh4-linux/bin/sh4-linux-ld --version # < git log --format=%s --max-count=1 06af8679449d4ed282df13191fc52d5ba28ec536 # < make -s -j 40 ARCH=sh O=/kisskb/build/linus_rsk7201_defconfig_sh4-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/sh4-linux/bin/sh4-linux- rsk7201_defconfig # < make -s -j 40 ARCH=sh O=/kisskb/build/linus_rsk7201_defconfig_sh4-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/sh4-linux/bin/sh4-linux- help # make -s -j 40 ARCH=sh O=/kisskb/build/linus_rsk7201_defconfig_sh4-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/sh4-linux/bin/sh4-linux- olddefconfig # make -s -j 40 ARCH=sh O=/kisskb/build/linus_rsk7201_defconfig_sh4-gcc4.9 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-4.9.4-nolibc/sh4-linux/bin/sh4-linux- Generating include/generated/machtypes.h :1511:2: warning: #warning syscall clone3 not implemented [-Wcpp] /kisskb/src/drivers/tty/serial/sh-sci.c: In function 'sci_remap_port': /kisskb/src/drivers/tty/serial/sh-sci.c:2666:19: warning: unused variable 'sport' [-Wunused-variable] struct sci_port *sport = to_sci_port(port); ^ Image Name: Linux-5.13.0-rc5+ Created: Sat Jul 17 19:57:16 2021 Image Type: SuperH Linux Kernel Image (gzip compressed) Data Size: 1712694 Bytes = 1672.55 KiB = 1.63 MiB Load Address: 08001000 Entry Point: 08002000 Image arch/sh/boot/uImage is ready Completed OK # rm -rf /kisskb/build/linus_rsk7201_defconfig_sh4-gcc4.9 # Build took: 0:00:18.891584