summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@linaro.org>2025-08-22 11:08:46 +0300
committerRob Herring (Arm) <robh@kernel.org>2025-08-22 16:21:35 -0500
commit80af3745ca465c6c47e833c1902004a7fa944f37 (patch)
tree6e5a292c11fd062074d136b937115ab585b7bac6
parentac29e4487aa20a21b7c3facbd1f14f5093835dc9 (diff)
of: dynamic: Fix use after free in of_changeset_add_prop_helper()
If the of_changeset_add_property() function call fails, then this code frees "new_pp" and then dereference it on the next line. Return the error code directly instead. Fixes: c81f6ce16785 ("of: dynamic: Fix memleak when of_pci_add_properties() failed") Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> Link: https://lore.kernel.org/r/aKgljjhnpa4lVpdx@stanley.mountain Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
-rw-r--r--drivers/of/dynamic.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c
index dd30b7d8b5e4..2eaaddcb0ec4 100644
--- a/drivers/of/dynamic.c
+++ b/drivers/of/dynamic.c
@@ -935,13 +935,15 @@ static int of_changeset_add_prop_helper(struct of_changeset *ocs,
return -ENOMEM;
ret = of_changeset_add_property(ocs, np, new_pp);
- if (ret)
+ if (ret) {
__of_prop_free(new_pp);
+ return ret;
+ }
new_pp->next = np->deadprops;
np->deadprops = new_pp;
- return ret;
+ return 0;
}
/**