]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
of: dynamic: Fix use after free in of_changeset_add_prop_helper()
authorDan Carpenter <dan.carpenter@linaro.org>
Fri, 22 Aug 2025 08:08:46 +0000 (11:08 +0300)
committerRob Herring (Arm) <robh@kernel.org>
Fri, 22 Aug 2025 21:21:35 +0000 (16:21 -0500)
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>
drivers/of/dynamic.c

index dd30b7d8b5e46920bf5284e08bda9c49e98bd2b0..2eaaddcb0ec4e24e08527434b15e2d2f5c2b3df8 100644 (file)
@@ -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;
 }
 
 /**