summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTero Kristo <t-kristo@ti.com>2017-10-24 17:14:18 +0300
committerDavid Gibson <david@gibson.dropbear.id.au>2017-10-27 16:25:54 +0200
commitbba26a5291c8343101e0296b0e478deb4c9b60b0 (patch)
treea2d29f005d4372041bf87715d3377ac31997dcb0
parentc8f8194d76cc2dc6d499548431ff62d0ddeca68d (diff)
downloaddevice-tree-compiler-bba26a5291c8343101e0296b0e478deb4c9b60b0.tar.gz
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 <t-kristo@ti.com> [dwg: Shortcut handling of invalid phandles] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r--dtc.c3
-rw-r--r--livetree.c5
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)