of: dynamic: Fix use after free in of_changeset_add_prop_helper()

[ Upstream commit 80af3745ca465c6c47e833c1902004a7fa944f37 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Dan Carpenter 2025-08-22 11:08:46 +03:00 committed by Greg Kroah-Hartman
parent 749137b41e
commit 9e0743eb6d

View File

@ -934,13 +934,15 @@ static int of_changeset_add_prop_helper(struct of_changeset *ocs,
return -ENOMEM; return -ENOMEM;
ret = of_changeset_add_property(ocs, np, new_pp); ret = of_changeset_add_property(ocs, np, new_pp);
if (ret) if (ret) {
__of_prop_free(new_pp); __of_prop_free(new_pp);
return ret;
}
new_pp->next = np->deadprops; new_pp->next = np->deadprops;
np->deadprops = new_pp; np->deadprops = new_pp;
return ret; return 0;
} }
/** /**