diff options
author | Rob Herring <robh@kernel.org> | 2017-10-18 16:29:14 -0500 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2017-10-19 12:32:09 +1100 |
commit | c1e55a5513e9bca41dc78a0f20245cc928596a3a (patch) | |
tree | 759df7e93e1988875492fee7fc675cce87bbbcaf | |
parent | f8872e29ce06d78d3db71b3ab26a7465fc8a9586 (diff) | |
download | dtc-c1e55a5513e9bca41dc78a0f20245cc928596a3a.zip dtc-c1e55a5513e9bca41dc78a0f20245cc928596a3a.tar.gz dtc-c1e55a5513e9bca41dc78a0f20245cc928596a3a.tar.bz2 |
checks: fix handling of unresolved phandles for dts plugins
In dts plugins, it is valid to have unresolved phandle values. The
check_property_phandle_args and check_interrupts_property checks failed to
account for this resulting in spurious warnings or asserts, respectively.
Fix this by bailing from the checks if we're checking a dts plugin as
there is no way to further validate the properties.
Fixes: ee3d26f6960b ("checks: add interrupts property check")
Fixes: b3bbac02d5e3 ("checks: add phandle with arg property checks")
Reported-by: Alan Tull <atull@kernel.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r-- | checks.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -988,6 +988,10 @@ static void check_property_phandle_args(struct check *c, * entries when each index position has a specific definition. */ if (phandle == 0 || phandle == -1) { + /* Give up if this is an overlay with external references */ + if (dti->dtsflags & DTSF_PLUGIN) + break; + cellsize = 0; continue; } @@ -1176,6 +1180,11 @@ static void check_interrupts_property(struct check *c, prop = get_property(parent, "interrupt-parent"); if (prop) { phandle = propval_cell(prop); + /* Give up if this is an overlay with external references */ + if ((phandle == 0 || phandle == -1) && + (dti->dtsflags & DTSF_PLUGIN)) + return; + irq_node = get_node_by_phandle(root, phandle); if (!irq_node) { FAIL(c, dti, "Bad interrupt-parent phandle for %s", |