aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Herring <robh@kernel.org>2017-10-18 16:29:14 -0500
committerDavid Gibson <david@gibson.dropbear.id.au>2017-10-19 12:32:09 +1100
commitc1e55a5513e9bca41dc78a0f20245cc928596a3a (patch)
tree759df7e93e1988875492fee7fc675cce87bbbcaf
parentf8872e29ce06d78d3db71b3ab26a7465fc8a9586 (diff)
downloaddtc-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.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/checks.c b/checks.c
index 08a3a29..e661384 100644
--- a/checks.c
+++ b/checks.c
@@ -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",