diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2020-11-11 15:06:56 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2020-11-11 15:10:38 +0100 |
commit | b93dfbbac6769c2f129777d4cbfaa0f466297a77 (patch) | |
tree | 64db16f922353cb3fed628e57dd503cf060dbd14 /arch/arm/mach-layerscape | |
parent | ebb9d20927cbe4c25f2f30334aec795c93fd0521 (diff) | |
download | barebox-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')
-rw-r--r-- | arch/arm/mach-layerscape/ppa.c | 1 |
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); |