summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-layerscape/ppa.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2020-11-11 15:06:56 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2020-11-11 15:10:38 +0100
commitb93dfbbac6769c2f129777d4cbfaa0f466297a77 (patch)
tree64db16f922353cb3fed628e57dd503cf060dbd14 /arch/arm/mach-layerscape/ppa.c
parentebb9d20927cbe4c25f2f30334aec795c93fd0521 (diff)
downloadbarebox-b93dfbbac6769c2f129777d4cbfaa0f466297a77.tar.gz
barebox-b93dfbbac6769c2f129777d4cbfaa0f466297a77.tar.xz
ARM: layerscape: ppa: Fix use after free
In of_psci_do_fixup() we want to delete the one job-ring device node which is used by the PPA secure firmware. When we have deleted the node we may not continue the for_each_compatible_node_from() loop, because that would derefence the just deleted node. We only want to delete a single node, so we do not need to continue the loop once we've found the node, so we can fix the issue by breaking out of the loop. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-layerscape/ppa.c')
-rw-r--r--arch/arm/mach-layerscape/ppa.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/mach-layerscape/ppa.c b/arch/arm/mach-layerscape/ppa.c
index 53e73f6a58..d962fba751 100644
--- a/arch/arm/mach-layerscape/ppa.c
+++ b/arch/arm/mach-layerscape/ppa.c
@@ -43,6 +43,7 @@ static int of_psci_do_fixup(struct device_node *root, void *unused)
continue;
of_delete_node(np);
+ break;
}
return of_psci_fixup(root, psci_version);