Message ID | 20230509172921.295700-1-liviu@dudau.co.uk (mailing list archive) |
---|---|
State | Accepted |
Commit | 4897a898a216058dec55e5e5902534e6e224fcdf |
Headers | show |
Series | mips: Move initrd_start check after initrd address sanitisation. | expand |
On Tue, May 09, 2023 at 06:29:21PM +0100, Liviu Dudau wrote: > PAGE_OFFSET is technically a virtual address so when checking the value of > initrd_start against it we should make sure that it has been sanitised from > the values passed by the bootloader. Without this change, even with a bootloader > that passes correct addresses for an initrd, we are failing to load it on MT7621 > boards, for example. > > Signed-off-by: Liviu Dudau <liviu@dudau.co.uk> > --- > arch/mips/kernel/setup.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) applied to mips-fixes. Thomas.
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index febdc5564638e..c0e65135481b7 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c @@ -158,10 +158,6 @@ static unsigned long __init init_initrd(void) pr_err("initrd start must be page aligned\n"); goto disable; } - if (initrd_start < PAGE_OFFSET) { - pr_err("initrd start < PAGE_OFFSET\n"); - goto disable; - } /* * Sanitize initrd addresses. For example firmware @@ -174,6 +170,11 @@ static unsigned long __init init_initrd(void) initrd_end = (unsigned long)__va(end); initrd_start = (unsigned long)__va(__pa(initrd_start)); + if (initrd_start < PAGE_OFFSET) { + pr_err("initrd start < PAGE_OFFSET\n"); + goto disable; + } + ROOT_DEV = Root_RAM0; return PFN_UP(end); disable:
PAGE_OFFSET is technically a virtual address so when checking the value of initrd_start against it we should make sure that it has been sanitised from the values passed by the bootloader. Without this change, even with a bootloader that passes correct addresses for an initrd, we are failing to load it on MT7621 boards, for example. Signed-off-by: Liviu Dudau <liviu@dudau.co.uk> --- arch/mips/kernel/setup.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)