From bba26a5291c8343101e0296b0e478deb4c9b60b0 Mon Sep 17 00:00:00 2001 From: Tero Kristo Date: Tue, 24 Oct 2017 17:14:18 +0300 Subject: livetree: avoid assertion of orphan phandles with overlays Right now, check_interrupts_property fails with overlays, as the phandle for the interrupt-parent can be orphan. Avoid this by allowing the orphan node to pass the assert check. The process_checks() call is also moved later during init sequence, so that we can use the global variable generate_fixups to check if we are compiling an overlay. Signed-off-by: Tero Kristo [dwg: Shortcut handling of invalid phandles] Signed-off-by: David Gibson --- dtc.c | 3 ++- livetree.c | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dtc.c b/dtc.c index 1655b2f..c36994e 100644 --- a/dtc.c +++ b/dtc.c @@ -317,13 +317,14 @@ int main(int argc, char *argv[]) dti->boot_cpuid_phys = cmdline_boot_cpuid; fill_fullpaths(dti->dt, ""); - process_checks(force, dti); /* on a plugin, generate by default */ if (dti->dtsflags & DTSF_PLUGIN) { generate_fixups = 1; } + process_checks(force, dti); + if (auto_label_aliases) generate_label_tree(dti, "aliases", false); diff --git a/livetree.c b/livetree.c index 6846ad2..184703a 100644 --- a/livetree.c +++ b/livetree.c @@ -540,7 +540,10 @@ struct node *get_node_by_phandle(struct node *tree, cell_t phandle) { struct node *child, *node; - assert((phandle != 0) && (phandle != -1)); + if ((phandle == 0) || (phandle == -1)) { + assert(generate_fixups); + return NULL; + } if (tree->phandle == phandle) { if (tree->deleted) -- cgit v1.2.1