Avoid assertion in check_interrupts_property()
If running on a tree with an 'interrupt-parent' property which contains an invalid phandle (0 or -1, not merely for a node which doesn't exist), then check_interrupts_property() will trip the assertion in get_node_by_phandle(). There's logic that almost detects this, but it only handles the overlay case, where we can't fully check because the links will be fixed up later. For the non-overlay case, this is definitely a bad property, but we shouldn't crash. Fix it by failing the check early. Fixes:c1e55a5513
("checks: fix handling of unresolved phandles for dts plugins") Fixes:ee3d26f696
("checks: add interrupts property check") Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
5c3513f689
commit
8f69567622
1 changed files with 7 additions and 3 deletions
10
checks.c
10
checks.c
|
@ -1580,10 +1580,14 @@ 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))
|
||||
if ((phandle == 0) || (phandle == -1)) {
|
||||
/* Give up if this is an overlay with
|
||||
* external references */
|
||||
if (dti->dtsflags & DTSF_PLUGIN)
|
||||
return;
|
||||
FAIL_PROP(c, dti, parent, prop, "Invalid phandle");
|
||||
continue;
|
||||
}
|
||||
|
||||
irq_node = get_node_by_phandle(root, phandle);
|
||||
if (!irq_node) {
|
||||
|
|
Loading…
Reference in a new issue