Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8126dec3 authored by Xiao Guangrong's avatar Xiao Guangrong Committed by Ingo Molnar
Browse files

x86: Fix system crash when loading with "reservetop" parameter



The system will die if the kernel is booted with "reservetop"
parameter, in present code, parse "reservetop" parameter after
early_ioremap_init(), and some function still use
early_ioremap() after it.

The problem is, "reservetop" parameter can modify
'FIXADDR_TOP', then the virtual address got by early_ioremap()
is base on old 'FIXADDR_TOP', but the page mapping is base on
new 'FIXADDR_TOP', it will occur page fault, and the IDT is not
prepare yet, so, the system is dead.

So, put parse_early_param() in the front of
early_ioremap_init() in this patch.

Signed-off-by: default avatarXiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Cc: yinghai@kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>
LKML-Reference: <4A8D402F.4080805@cn.fujitsu.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent fc0ce235
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -711,6 +711,11 @@ void __init setup_arch(char **cmdline_p)
	printk(KERN_INFO "Command line: %s\n", boot_command_line);
#endif

	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
	*cmdline_p = command_line;

	parse_early_param();

	/* VMI may relocate the fixmap; do this before touching ioremap area */
	vmi_init();

@@ -793,11 +798,6 @@ void __init setup_arch(char **cmdline_p)
#endif
#endif

	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
	*cmdline_p = command_line;

	parse_early_param();

#ifdef CONFIG_X86_64
	check_efer();
#endif