WSL2-Linux-Kernel/arch/m68k/kernel
Eric W. Biederman fcb116bc43 signal: Replace force_fatal_sig with force_exit_sig when in doubt
Recently to prevent issues with SECCOMP_RET_KILL and similar signals
being changed before they are delivered SA_IMMUTABLE was added.

Unfortunately this broke debuggers[1][2] which reasonably expect
to be able to trap synchronous SIGTRAP and SIGSEGV even when
the target process is not configured to handle those signals.

Add force_exit_sig and use it instead of force_fatal_sig where
historically the code has directly called do_exit.  This has the
implementation benefits of going through the signal exit path
(including generating core dumps) without the danger of allowing
userspace to ignore or change these signals.

This avoids userspace regressions as older kernels exited with do_exit
which debuggers also can not intercept.

In the future is should be possible to improve the quality of
implementation of the kernel by changing some of these force_exit_sig
calls to force_fatal_sig.  That can be done where it matters on
a case-by-case basis with careful analysis.

Reported-by: Kyle Huey <me@kylehuey.com>
Reported-by: kernel test robot <oliver.sang@intel.com>
[1] https://lkml.kernel.org/r/CAP045AoMY4xf8aC_4QU_-j7obuEPYgTcnQQP3Yxk=2X90jtpjw@mail.gmail.com
[2] https://lkml.kernel.org/r/20211117150258.GB5403@xsang-OptiPlex-9020
Fixes: 00b06da29c ("signal: Add SA_IMMUTABLE to ensure forced siganls do not get changed")
Fixes: a3616a3c02 ("signal/m68k: Use force_sigsegv(SIGSEGV) in fpsp040_die")
Fixes: 83a1f27ad7 ("signal/powerpc: On swapcontext failure force SIGSEGV")
Fixes: 9bc508cf07 ("signal/s390: Use force_sigsegv in default_trap_handler")
Fixes: 086ec444f8 ("signal/sparc32: In setup_rt_frame and setup_fram use force_fatal_sig")
Fixes: c317d306d5 ("signal/sparc32: Exit with a fatal signal when try_to_clear_window_buffer fails")
Fixes: 695dd0d634 ("signal/x86: In emulate_vsyscall force a signal instead of calling do_exit")
Fixes: 1fbd60df8a ("signal/vm86_32: Properly send SIGSEGV when the vm86 state cannot be saved.")
Fixes: 941edc5bf1 ("exit/syscall_user_dispatch: Send ordinary signals on failure")
Link: https://lkml.kernel.org/r/871r3dqfv8.fsf_-_@email.froward.int.ebiederm.org
Reviewed-by: Kees Cook <keescook@chromium.org>
Tested-by: Kees Cook <keescook@chromium.org>
Tested-by: Kyle Huey <khuey@kylehuey.com>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
2021-11-19 09:15:58 -06:00
..
syscalls Merge branch 'akpm' (patches from Andrew) 2021-09-03 10:08:28 -07:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
asm-offsets.c m68k: Remove set_fs() 2021-09-24 13:35:07 +02:00
bootinfo_proc.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
dma.c m68k: dma: Remove unnecessary include of asm/cacheflush.h 2021-05-10 11:47:00 +02:00
early_printk.c m68knommu: remove obsolete 68360 support 2016-03-07 10:07:17 +10:00
entry.S m68k: Remove set_fs() 2021-09-24 13:35:07 +02:00
head.S m68k: Correct some typos in comments 2020-08-26 13:26:52 +02:00
ints.c m68k: Do not rely on magic indirect includes 2014-03-05 13:28:32 +01:00
irq.c Disintegrate asm/system.h for M68K 2012-03-28 18:30:02 +01:00
machine_kexec.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
module.c m68k/kernel: Modernize printing of kernel messages 2017-02-12 10:36:52 +01:00
pcibios.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
process.c sched: Add wrapper for get_wchan() to keep task blocked 2021-10-15 11:25:14 +02:00
ptrace.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
relocate_kernel.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
setup.c m68k: pull mach_beep in setup.c 2017-11-06 08:25:21 +10:00
setup_mm.c m68k: convert to setup_initial_init_mm() 2021-07-08 11:48:21 -07:00
setup_no.c m68k: convert to setup_initial_init_mm() 2021-07-08 11:48:21 -07:00
signal.c m68k: Leave stack mangling to asm wrapper of sigreturn() 2021-09-24 13:35:03 +02:00
sun3-head.S m68k/sun3: Remove is_medusa and m68k_pgtable_cachemode 2018-08-31 09:30:42 +02:00
sys_m68k.c arch/m68k/kernel/sys_m68k: use vma_lookup() in sys_cacheflush() 2021-06-29 10:53:51 -07:00
syscalltable.S m68k: syscalls: switch to generic syscalltbl.sh 2021-04-06 09:33:20 +02:00
time.c m68k: remove timer_interrupt() function 2020-10-30 21:57:06 +01:00
traps.c signal: Replace force_fatal_sig with force_exit_sig when in doubt 2021-11-19 09:15:58 -06:00
uboot.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
vectors.c Disintegrate asm/system.h for M68K 2012-03-28 18:30:02 +01:00
vmlinux-nommu.lds Fixes include: 2020-12-21 10:35:11 -08:00
vmlinux-std.lds m68k: Add a missing ELF_DETAILS in link script 2020-11-23 11:31:00 +01:00
vmlinux-sun3.lds m68k: Add a missing ELF_DETAILS in link script 2020-11-23 11:31:00 +01:00
vmlinux.lds.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00