mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
s390/boot: fix absolute zero lowcore corruption on boot
[ Upstream commit12dd19c159] Crash dump always starts on CPU0. In case CPU0 is offline the prefix page is not installed and the absolute zero lowcore is used. However, struct lowcore::mcesad is never assigned and stays zero. That leads to __machine_kdump() -> save_vx_regs() call silently stores vector registers to the absolute lowcore at 0x11b0 offset. Fixes:a62bc07392("s390/kdump: add support for vector extension") Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a557ae0942
commit
4b198c41d7
@@ -62,7 +62,7 @@ static inline unsigned long nmi_get_mcesa_size(void)
|
||||
* The structure is required for machine check happening early in
|
||||
* the boot process.
|
||||
*/
|
||||
static struct mcesa boot_mcesa __initdata __aligned(MCESA_MAX_SIZE);
|
||||
static struct mcesa boot_mcesa __aligned(MCESA_MAX_SIZE);
|
||||
|
||||
void __init nmi_alloc_boot_cpu(struct lowcore *lc)
|
||||
{
|
||||
|
||||
@@ -484,6 +484,7 @@ static void __init setup_lowcore_dat_off(void)
|
||||
put_abs_lowcore(restart_data, lc->restart_data);
|
||||
put_abs_lowcore(restart_source, lc->restart_source);
|
||||
put_abs_lowcore(restart_psw, lc->restart_psw);
|
||||
put_abs_lowcore(mcesad, lc->mcesad);
|
||||
|
||||
lc->spinlock_lockval = arch_spin_lockval(0);
|
||||
lc->spinlock_index = 0;
|
||||
|
||||
Reference in New Issue
Block a user