]> git.itanic.dy.fi Git - linux-stable/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)
commit08685be7761d69914f08c3d6211c543a385a5b9c
tree4ca6766ab8b6d80777e668ffa7c1e9fc51e2d2df
parentdd3a44c06f7b4f14e90065bf05d62c255b20005f
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: f79643787e0a0 ("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