[PATCH 3/3] OF: base: add empty property value pointer

Sebastian Hesselbarth sebastian.hesselbarth at gmail.com
Fri Jun 21 11:15:18 EDT 2013


Since property values can be empty, we need property value pointer to
be non-NULL to distinguish those properties from non-existing properties.
This adds a static u32 to which empty properties set their value pointer.
Also, the value memory is only freed, if property length is not zero.

Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth at gmail.com>
---
Cc: barebox at lists.infradead.org
---
 drivers/of/base.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/of/base.c b/drivers/of/base.c
index 7926d5d..a100a17 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1501,6 +1501,8 @@ struct device_node *of_new_node(struct device_node *parent, const char *name)
 	return node;
 }
 
+static u32 empty_prop_value;
+
 struct property *of_new_property(struct device_node *node, const char *name,
 		const void *data, int len)
 {
@@ -1515,6 +1517,7 @@ struct property *of_new_property(struct device_node *node, const char *name,
 		goto bail_out;
 
 	prop->length = len;
+	prop->value = &empty_prop_value;
 	if (len) {
 		prop->value = xzalloc(len);
 		if (!prop->value)
@@ -1541,7 +1544,8 @@ void of_delete_property(struct property *pp)
 	list_del(&pp->list);
 
 	free(pp->name);
-	free(pp->value);
+	if (pp->length)
+		free(pp->value);
 	free(pp);
 }
 
-- 
1.7.2.5




More information about the barebox mailing list