Re: [PATCH] MIPS: generic: Fix KASLR for generic kernel.
On Monday, 17 October 2016 11:05:09 BST Matt Redfearn wrote: > The KASLR code requires that the plat_get_fdt() function return the > address of the device tree, and it must be available early in the boot, > before prom_init() is called. Move the code determining the address of > the device tree into plat_get_fdt, and call that from prom_init(). > > The fdt pointer will be set up by plat_get_fdt() called from > relocate_kernel initially and once the relocated kernel has started, > prom_init() will use it again to determine the address in the relocated > image. > > Fixes: eed0eabd12ef > Signed-off-by: Matt Redfearn > --- > > arch/mips/generic/init.c | 16 ++-- > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/arch/mips/generic/init.c b/arch/mips/generic/init.c > index 0ea73e845440..d493ccbf274a 100644 > --- a/arch/mips/generic/init.c > +++ b/arch/mips/generic/init.c > @@ -30,9 +30,19 @@ static __initdata const void *mach_match_data; > > void __init prom_init(void) > { > + plat_get_fdt(); > + BUG_ON(!fdt); > +} > + > +void __init *plat_get_fdt(void) > +{ > const struct mips_machine *check_mach; > const struct of_device_id *match; > > + if (fdt) > + /* Already set up */ > + return (void *)fdt; > + > if ((fw_arg0 == -2) && !fdt_check_header((void *)fw_arg1)) { > /* >* We booted using the UHI boot protocol, so we have been > @@ -75,12 +85,6 @@ void __init prom_init(void) > /* Retrieve the machine's FDT */ > fdt = mach->fdt; > } > - > - BUG_ON(!fdt); > -} > - > -void __init *plat_get_fdt(void) > -{ > return (void *)fdt; > } Hi Matt, Apart from the Fixes tag niggle James mentioned (which checkpatch ought to pick up on): Reviewed-by: Paul Burton Thanks, Paul signature.asc Description: This is a digitally signed message part.
Re: [PATCH] MIPS: generic: Fix KASLR for generic kernel.
Hi Matt, On Mon, Oct 17, 2016 at 11:05:09AM +0100, Matt Redfearn wrote: > The KASLR code requires that the plat_get_fdt() function return the > address of the device tree, and it must be available early in the boot, > before prom_init() is called. Move the code determining the address of > the device tree into plat_get_fdt, and call that from prom_init(). > > The fdt pointer will be set up by plat_get_fdt() called from > relocate_kernel initially and once the relocated kernel has started, > prom_init() will use it again to determine the address in the relocated > image. > > Fixes: eed0eabd12ef I believe this is the preferred form: Fixes: eed0eabd12ef ("MIPS: generic: Introduce generic DT-based board support") Otherwise looks good to me Reviewed-by: James Hogan Cheers James > Signed-off-by: Matt Redfearn > --- > > arch/mips/generic/init.c | 16 ++-- > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/arch/mips/generic/init.c b/arch/mips/generic/init.c > index 0ea73e845440..d493ccbf274a 100644 > --- a/arch/mips/generic/init.c > +++ b/arch/mips/generic/init.c > @@ -30,9 +30,19 @@ static __initdata const void *mach_match_data; > > void __init prom_init(void) > { > + plat_get_fdt(); > + BUG_ON(!fdt); > +} > + > +void __init *plat_get_fdt(void) > +{ > const struct mips_machine *check_mach; > const struct of_device_id *match; > > + if (fdt) > + /* Already set up */ > + return (void *)fdt; > + > if ((fw_arg0 == -2) && !fdt_check_header((void *)fw_arg1)) { > /* >* We booted using the UHI boot protocol, so we have been > @@ -75,12 +85,6 @@ void __init prom_init(void) > /* Retrieve the machine's FDT */ > fdt = mach->fdt; > } > - > - BUG_ON(!fdt); > -} > - > -void __init *plat_get_fdt(void) > -{ > return (void *)fdt; > } > > -- > 2.7.4 > > signature.asc Description: Digital signature
[PATCH] MIPS: generic: Fix KASLR for generic kernel.
The KASLR code requires that the plat_get_fdt() function return the address of the device tree, and it must be available early in the boot, before prom_init() is called. Move the code determining the address of the device tree into plat_get_fdt, and call that from prom_init(). The fdt pointer will be set up by plat_get_fdt() called from relocate_kernel initially and once the relocated kernel has started, prom_init() will use it again to determine the address in the relocated image. Fixes: eed0eabd12ef Signed-off-by: Matt Redfearn --- arch/mips/generic/init.c | 16 ++-- 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/arch/mips/generic/init.c b/arch/mips/generic/init.c index 0ea73e845440..d493ccbf274a 100644 --- a/arch/mips/generic/init.c +++ b/arch/mips/generic/init.c @@ -30,9 +30,19 @@ static __initdata const void *mach_match_data; void __init prom_init(void) { + plat_get_fdt(); + BUG_ON(!fdt); +} + +void __init *plat_get_fdt(void) +{ const struct mips_machine *check_mach; const struct of_device_id *match; + if (fdt) + /* Already set up */ + return (void *)fdt; + if ((fw_arg0 == -2) && !fdt_check_header((void *)fw_arg1)) { /* * We booted using the UHI boot protocol, so we have been @@ -75,12 +85,6 @@ void __init prom_init(void) /* Retrieve the machine's FDT */ fdt = mach->fdt; } - - BUG_ON(!fdt); -} - -void __init *plat_get_fdt(void) -{ return (void *)fdt; } -- 2.7.4