Commit eb6b6930 authored by Rich Felker's avatar Rich Felker

sh: fix memory corruption of unflattened device tree

unflatten_device_tree() makes use of memblock allocation, and
therefore must be called before paging_init() migrates the memblock
allocation data to the bootmem framework. Otherwise the record of the
allocation for the expanded device tree will be lost, and will
eventually be clobbered when allocated for another use.
Signed-off-by: default avatarRich Felker <dalias@libc.org>
parent 9b7e30ab
...@@ -126,12 +126,6 @@ static void __init sh_of_setup(char **cmdline_p) ...@@ -126,12 +126,6 @@ static void __init sh_of_setup(char **cmdline_p)
{ {
struct device_node *root; struct device_node *root;
#ifdef CONFIG_USE_BUILTIN_DTB
unflatten_and_copy_device_tree();
#else
unflatten_device_tree();
#endif
board_time_init = sh_of_time_init; board_time_init = sh_of_time_init;
sh_mv.mv_name = "Unknown SH model"; sh_mv.mv_name = "Unknown SH model";
......
...@@ -330,6 +330,14 @@ void __init setup_arch(char **cmdline_p) ...@@ -330,6 +330,14 @@ void __init setup_arch(char **cmdline_p)
/* Let earlyprintk output early console messages */ /* Let earlyprintk output early console messages */
early_platform_driver_probe("earlyprintk", 1, 1); early_platform_driver_probe("earlyprintk", 1, 1);
#ifdef CONFIG_OF_FLATTREE
#ifdef CONFIG_USE_BUILTIN_DTB
unflatten_and_copy_device_tree();
#else
unflatten_device_tree();
#endif
#endif
paging_init(); paging_init();
#ifdef CONFIG_DUMMY_CONSOLE #ifdef CONFIG_DUMMY_CONSOLE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment