Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac0f3e30 authored by Lixin Wang's avatar Lixin Wang Committed by Rob Herring
Browse files

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: default avatarLixin Wang <alan.1.wang@nokia-sbell.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent e0f41456
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -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,