]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/64s: fix scv entry fallback flush vs interrupt
authorNicholas Piggin <npiggin@gmail.com>
Mon, 11 Jan 2021 06:24:08 +0000 (16:24 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 20 Jan 2021 04:58:19 +0000 (15:58 +1100)
commite6f379c47b4f69d12e1acc0207f2966f2bcc0d84
tree4ca6766ab8b6d80777e668ffa7c1e9fc51e2d2df
parent05c36399244c6178e2769708107baf02e83f6fde
powerpc/64s: fix scv entry fallback flush vs interrupt

The L1D flush fallback functions are not recoverable vs interrupts,
yet the scv entry flush runs with MSR[EE]=1. This can result in a
timer (soft-NMI) or MCE or SRESET interrupt hitting here and overwriting
the EXRFI save area, which ends up corrupting userspace registers for
scv return.

Fix this by disabling RI and EE for the scv entry fallback flush.

Fixes: 68bcd2321b453 ("powerpc/64s: flush L1D on kernel entry")
Cc: stable@vger.kernel.org # 5.9+ which also have flush L1D patch backport
Reported-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210111062408.287092-1-npiggin@gmail.com
arch/powerpc/include/asm/exception-64s.h
arch/powerpc/include/asm/feature-fixups.h
arch/powerpc/kernel/entry_64.S
arch/powerpc/kernel/exceptions-64s.S
arch/powerpc/kernel/vmlinux.lds.S
arch/powerpc/lib/feature-fixups.c