Messages in this thread | | | Subject | Re: [PATCH v3 5/6] powerpc/fsl_booke/64: clear the original kernel if randomized | From | Jason Yan <> | Date | Thu, 5 Mar 2020 11:20:38 +0800 |
| |
在 2020/3/5 5:53, Scott Wood 写道: > On Thu, 2020-02-06 at 10:58 +0800, Jason Yan wrote: >> The original kernel still exists in the memory, clear it now. >> >> Signed-off-by: Jason Yan <yanaijie@huawei.com> >> Cc: Scott Wood <oss@buserror.net> >> Cc: Diana Craciun <diana.craciun@nxp.com> >> Cc: Michael Ellerman <mpe@ellerman.id.au> >> Cc: Christophe Leroy <christophe.leroy@c-s.fr> >> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> >> Cc: Paul Mackerras <paulus@samba.org> >> Cc: Nicholas Piggin <npiggin@gmail.com> >> Cc: Kees Cook <keescook@chromium.org> >> --- >> arch/powerpc/mm/nohash/kaslr_booke.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/arch/powerpc/mm/nohash/kaslr_booke.c >> b/arch/powerpc/mm/nohash/kaslr_booke.c >> index c6f5c1db1394..ed1277059368 100644 >> --- a/arch/powerpc/mm/nohash/kaslr_booke.c >> +++ b/arch/powerpc/mm/nohash/kaslr_booke.c >> @@ -378,8 +378,10 @@ notrace void __init kaslr_early_init(void *dt_ptr, >> phys_addr_t size) >> unsigned int *__kaslr_offset = (unsigned int *)(KERNELBASE + 0x58); >> unsigned int *__run_at_load = (unsigned int *)(KERNELBASE + 0x5c); >> >> - if (*__run_at_load == 1) >> + if (*__run_at_load == 1) { >> + kaslr_late_init(); >> return; >> + } > > What if you're here because kexec set __run_at_load (or > CONFIG_RELOCATABLE_TEST is enabled), not because kaslr happened? >
Nothing will happen because kaslr_late_init() only clears memory when kernstart_virt_addr is not KERNELBASE. When __run_at_load is set then KASLR will not take effect.
> -Scott > > > > . >
| |