mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
xen/arm: check for multiboot nodes only under /chosen
Make sure to only look for multiboot compatible nodes only under /chosen, not under any other paths (depth <= 3). Signed-off-by: Stefano Stabellini <stefanos@xilinx.com> [julien: Use sizeof(path) instead of len ] Reviewed-by: Julien Grall <julien.grall@arm.com>
This commit is contained in:
1 parent
f7ce956f26
commit
c32e3689c5
1 file changed
+10
-2
+10
-2
@@ -174,6 +174,14 @@ static void __init process_multiboot_node(const void *fdt, int node,
|
||||
paddr_t start, size;
|
||||
const char *cmdline;
|
||||
int len;
|
||||
/* sizeof("/chosen/") + DT_MAX_NAME + '/' + DT_MAX_NAME + '/0' => 92 */
|
||||
char path[92];
|
||||
int ret;
|
||||
|
||||
/* Check that the node is under "/chosen" (first 7 chars of path) */
|
||||
ret = fdt_get_path(fdt, node, path, sizeof (path));
|
||||
if ( ret != 0 || strncmp(path, "/chosen", 7) )
|
||||
return;
|
||||
|
||||
prop = fdt_get_property(fdt, node, "reg", &len);
|
||||
if ( !prop )
|
||||
@@ -286,8 +294,8 @@ static int __init early_scan_node(const void *fdt,
|
||||
{
|
||||
if ( device_tree_node_matches(fdt, node, "memory") )
|
||||
process_memory_node(fdt, node, name, address_cells, size_cells);
|
||||
else if ( device_tree_node_compatible(fdt, node, "xen,multiboot-module" ) ||
|
||||
device_tree_node_compatible(fdt, node, "multiboot,module" ))
|
||||
else if ( depth <= 3 && (device_tree_node_compatible(fdt, node, "xen,multiboot-module" ) ||
|
||||
device_tree_node_compatible(fdt, node, "multiboot,module" )))
|
||||
process_multiboot_node(fdt, node, name, address_cells, size_cells);
|
||||
else if ( depth == 1 && device_tree_node_matches(fdt, node, "chosen") )
|
||||
process_chosen_node(fdt, node, name, address_cells, size_cells);
|
||||
|
||||