From: Dan Carpenter Date: Fri, 22 Aug 2025 08:08:46 +0000 (+0300) Subject: of: dynamic: Fix use after free in of_changeset_add_prop_helper() X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=80af3745ca465c6c47e833c1902004a7fa944f37;p=users%2Fjedix%2Flinux-maple.git 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 Link: https://lore.kernel.org/r/aKgljjhnpa4lVpdx@stanley.mountain Signed-off-by: Rob Herring (Arm) --- diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c index dd30b7d8b5e46..2eaaddcb0ec4e 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; } /**