mirror of
https://github.com/torvalds/linux.git
synced 2024-12-30 14:52:05 +00:00
of: overlay: fix memory leak related to duplicated property
Function of_changeset_add_property or of_changeset_update_property may fails. In this case the property just allocated is never deallocated. Signed-off-by: Lixin Wang <alan.1.wang@nokia-sbell.com> Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
parent
e0f4145685
commit
ac0f3e30d8
@ -162,6 +162,7 @@ static int of_overlay_apply_single_property(struct of_overlay *ov,
|
||||
bool is_symbols_node)
|
||||
{
|
||||
struct property *propn = NULL, *tprop;
|
||||
int ret = 0;
|
||||
|
||||
/* NOTE: Multiple changes of single properties not supported */
|
||||
tprop = of_find_property(target, prop->name, NULL);
|
||||
@ -186,10 +187,16 @@ static int of_overlay_apply_single_property(struct of_overlay *ov,
|
||||
|
||||
/* not found? add */
|
||||
if (tprop == NULL)
|
||||
return of_changeset_add_property(&ov->cset, target, propn);
|
||||
ret = of_changeset_add_property(&ov->cset, target, propn);
|
||||
else /* found? update */
|
||||
ret = of_changeset_update_property(&ov->cset, target, propn);
|
||||
|
||||
/* found? update */
|
||||
return of_changeset_update_property(&ov->cset, target, propn);
|
||||
if (ret) {
|
||||
kfree(propn->name);
|
||||
kfree(propn->value);
|
||||
kfree(propn);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int of_overlay_apply_single_device_node(struct of_overlay *ov,
|
||||
|
Loading…
Reference in New Issue
Block a user