android_kernel_samsung_sm8650/arch/m68k
Finn Thain 0845660508 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 14:03:18 +01:00
..
68000 m68k: Check syscall_trace_enter() return code 2023-03-10 09:33:51 +01:00
amiga m68k: Add asm/config.h 2022-02-21 12:00:20 +01:00
apollo m68k: Add asm/config.h 2022-02-21 12:00:20 +01:00
atari for-5.18/block-2022-03-18 2022-03-21 16:48:55 -07:00
bvme6000 for-5.18/block-2022-03-18 2022-03-21 16:48:55 -07:00
coldfire m68k: Check syscall_trace_enter() return code 2023-03-10 09:33:51 +01:00
configs m68knommu: updates and fixes for v6.1 2022-10-10 14:19:05 -07:00
emu block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
fpsp040 signal/m68k: Use force_sigsegv(SIGSEGV) in fpsp040_die 2021-08-26 09:59:15 -05:00
hp300 m68k: removed unused "mach_get_ss" 2022-05-25 00:04:11 +10:00
ifpsp060 m68k: fpsp040,ifpsp060: Remove meaningless EXTRA_LDFLAGS 2021-04-06 09:33:20 +02:00
include - hfs and hfsplus kmap API modernization from Fabio Francesco 2022-10-12 11:00:22 -07:00
kernel m68k: Move signal frame following exception on 68020/030 2023-05-30 14:03:18 +01:00
lib net: unexport csum_and_copy_{from,to}_user 2022-04-29 14:37:59 -07:00
mac m68k: Add common forward declaration for show_registers() 2022-07-12 10:48:21 +02:00
math-emu m68k: math-emu: Fix typos in comments 2022-05-09 13:13:59 +02:00
mm m68k: mm: Fix systems with memory at end of 32-bit address space 2023-03-30 12:49:16 +02:00
mvme16x for-5.18/block-2022-03-18 2022-03-21 16:48:55 -07:00
mvme147 for-5.18/block-2022-03-18 2022-03-21 16:48:55 -07:00
q40 This was a moderately busy cycle for documentation, but nothing all that 2022-08-02 19:24:24 -07:00
sun3 m68k: sun3: Use __func__ to get function's name in an output message 2022-06-20 14:16:43 +02:00
sun3x m68k: Remove set_fs() 2021-09-24 13:35:07 +02:00
tools/amiga m68k: tools: Replace zero-length array with flexible-array member 2020-05-25 10:55:56 +02:00
virt m68k: Rework BI_VIRT_RNG_SEED as BI_RNG_SEED 2022-09-28 22:16:44 +02:00
install.sh kbuild: factor out the common installation code into scripts/install.sh 2022-05-11 21:45:53 +09:00
Kbuild m68k: Introduce a virtual m68k machine 2022-04-11 11:48:01 +02:00
Kconfig m68k: Allow kexec on M68KCLASSIC with MMU enabled only 2022-09-19 10:40:58 +02:00
Kconfig.bus m68k: coldfire: drop ISA_DMA_API support 2022-05-16 13:18:30 +10:00
Kconfig.cpu - Yu Zhao's Multi-Gen LRU patches are here. They've been under test in 2022-10-10 17:53:04 -07:00
Kconfig.debug m68k: Kconfig.debug: Replace single quotes 2022-07-06 14:07:04 +02:00
Kconfig.devices m68k: /proc/hardware should depend on PROC_FS 2023-03-10 09:33:03 +01:00
Kconfig.machine m68k: Kconfig.machine: Add endif comment 2022-07-06 14:07:04 +02:00
Makefile kbuild: remove head-y syntax 2022-10-02 18:06:03 +09:00