android_kernel_xiaomi_sm8450/arch/m68k
Finn Thain 89eba5586a m68k: Move signal frame following exception on 68020/030
commit b845b574f86dcb6a70dfa698aa87a237b0878d2a upstream.

On 68030/020, an instruction such as, moveml %a2-%a3/%a5,%sp@- may cause
a stack page fault during instruction execution (i.e. not at an
instruction boundary) and produce a format 0xB exception frame.

In this situation, the value of USP will be unreliable.  If a signal is
to be delivered following the exception, this USP value is used to
calculate the location for a signal frame.  This can result in a
corrupted user stack.

The corruption was detected in dash (actually in glibc) where it showed
up as an intermittent "stack smashing detected" message and crash
following signal delivery for SIGCHLD.

It was hard to reproduce that failure because delivery of the signal
raced with the page fault and because the kernel places an unpredictable
gap of up to 7 bytes between the USP and the signal frame.

A format 0xB exception frame can be produced by a bus error or an
address error.  The 68030 Users Manual says that address errors occur
immediately upon detection during instruction prefetch.  The instruction
pipeline allows prefetch to overlap with other instructions, which means
an address error can arise during the execution of a different
instruction.  So it seems likely that this patch may help in the address
error case also.

Reported-and-tested-by: Stan Johnson <userm57@yahoo.com>
Link: https://lore.kernel.org/all/CAMuHMdW3yD22_ApemzW_6me3adq6A458u1_F0v-1EYwK_62jPA@mail.gmail.com/
Cc: Michael Schmitz <schmitzmic@gmail.com>
Cc: Andreas Schwab <schwab@linux-m68k.org>
Cc: stable@vger.kernel.org
Co-developed-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Finn Thain <fthain@linux-m68k.org>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/r/9e66262a754fcba50208aa424188896cc52a1dd1.1683365892.git.fthain@linux-m68k.org
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-05-30 12:57:56 +01:00
..
68000 m68k: Check syscall_trace_enter() return code 2023-03-11 16:39:50 +01:00
amiga m68k: amiga: Clean up Amiga hardware configuration 2020-09-07 10:56:08 +02:00
apollo mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
atari treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
bvme6000 mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
coldfire m68k: Check syscall_trace_enter() return code 2023-03-11 16:39:50 +01:00
configs ide/macide: Convert Mac IDE driver to platform driver 2020-09-28 10:48:17 +02:00
emu m68k: emu: Fix invalid free in nfeth_cleanup() 2021-09-15 09:50:27 +02:00
fpsp040 License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hp300 treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
ifpsp060 scripts/spelling.txt: add regsiter -> register spelling mistake 2017-05-08 17:15:13 -07:00
include m68k: add support for TIF_NOTIFY_SIGNAL 2023-01-04 11:39:19 +01:00
kernel m68k: Move signal frame following exception on 68020/030 2023-05-30 12:57:56 +01:00
lib m68k: get rid of zeroing destination on error in csum_and_copy_from_user() 2020-08-20 15:45:17 -04:00
mac m68k: Fix WARNING splat in pmac_zilog driver 2020-12-30 11:54:11 +01:00
math-emu treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 74 2019-05-24 17:36:47 +02:00
mm exit: Add and use make_task_dead. 2023-02-01 08:23:19 +01:00
mvme16x m68k: mvme147,mvme16x: Don't wipe PCC timer config bits 2021-05-14 09:50:14 +02:00
mvme147 m68k: mvme147,mvme16x: Don't wipe PCC timer config bits 2021-05-14 09:50:14 +02:00
q40 mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
sun3 m68k: sun3: Descend to prom from arch/m68k/sun3 2020-07-13 11:39:12 +02:00
sun3x mm: remove unneeded includes of <asm/pgalloc.h> 2020-08-07 11:33:26 -07:00
tools/amiga m68k: tools: Replace zero-length array with flexible-array member 2020-05-25 10:55:56 +02:00
install.sh
Kbuild m68k: sun3: Descend to prom from arch/m68k/sun3 2020-07-13 11:39:12 +02:00
Kconfig Merge branch 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2020-10-22 09:59:21 -07:00
Kconfig.bus Revert "m68knommu: only set CONFIG_ISA_DMA_API for ColdFire sub-arch" 2022-07-29 17:19:09 +02:00
Kconfig.cpu m68k: math-emu: Fix dependencies of math emulation support 2022-06-09 10:21:09 +02:00
Kconfig.debug m68k: Fix Kconfig indentation 2020-03-09 11:12:19 +01:00
Kconfig.devices m68k: /proc/hardware should depend on PROC_FS 2023-03-11 16:39:27 +01:00
Kconfig.machine m68knommu: fix undefined reference to `_init_sp' 2022-06-14 18:32:38 +02:00
Makefile kbuild: preprocess module linker script 2020-09-25 00:36:41 +09:00