s390/early: fix sclp_early_sccb variable lifetime
[ Upstream commit639886b71d
] Commitada1da31ce
("s390/sclp: sort out physical vs virtual pointers usage") fixed the notion of virtual address for sclp_early_sccb pointer. However, it did not take into account that kasan_early_init() can also output messages and sclp_early_sccb should be adjusted by the time kasan_early_init() is called. Currently it is not a problem, since virtual and physical addresses on s390 are the same. Nevertheless, should they ever differ, this would cause an invalid pointer access. Fixes:ada1da31ce
("s390/sclp: sort out physical vs virtual pointers usage") Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
0903111d67
commit
ec75af7e81
|
@ -288,7 +288,6 @@ static void __init sort_amode31_extable(void)
|
|||
|
||||
void __init startup_init(void)
|
||||
{
|
||||
sclp_early_adjust_va();
|
||||
reset_tod_clock();
|
||||
check_image_bootable();
|
||||
time_early_init();
|
||||
|
|
|
@ -25,6 +25,7 @@ ENTRY(startup_continue)
|
|||
larl %r14,init_task
|
||||
stg %r14,__LC_CURRENT
|
||||
larl %r15,init_thread_union+THREAD_SIZE-STACK_FRAME_OVERHEAD-__PT_SIZE
|
||||
brasl %r14,sclp_early_adjust_va # allow sclp_early_printk
|
||||
#ifdef CONFIG_KASAN
|
||||
brasl %r14,kasan_early_init
|
||||
#endif
|
||||
|
|
|
@ -161,7 +161,7 @@ static void __init sclp_early_console_detect(struct init_sccb *sccb)
|
|||
sclp.has_linemode = 1;
|
||||
}
|
||||
|
||||
void __init sclp_early_adjust_va(void)
|
||||
void __init __no_sanitize_address sclp_early_adjust_va(void)
|
||||
{
|
||||
sclp_early_sccb = __va((unsigned long)sclp_early_sccb);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue