9
0
Fork 0

OF: base: use of_delete_property where applicable

This patch makes OF API use of_delete_property where applicable instead
of freeing allocated data in different places.

Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sebastian Hesselbarth 2013-06-24 12:49:21 +02:00 committed by Sascha Hauer
parent d4d586cbac
commit fff76d57d2
1 changed files with 25 additions and 56 deletions

View File

@ -899,16 +899,11 @@ int of_property_write_u8_array(struct device_node *np,
struct property *prop = of_find_property(np, propname, NULL);
u8 *val;
if (!prop)
prop = of_new_property(np, propname, NULL, 0);
if (!prop)
return -ENOMEM;
if (prop)
of_delete_property(prop);
free(prop->value);
prop->length = sizeof(*val) * sz;
prop->value = malloc(prop->length);
if (!prop->value)
prop = of_new_property(np, propname, NULL, sizeof(*val) * sz);
if (!prop)
return -ENOMEM;
val = prop->value;
@ -940,16 +935,11 @@ int of_property_write_u16_array(struct device_node *np,
struct property *prop = of_find_property(np, propname, NULL);
__be16 *val;
if (!prop)
prop = of_new_property(np, propname, NULL, 0);
if (!prop)
return -ENOMEM;
if (prop)
of_delete_property(prop);
free(prop->value);
prop->length = sizeof(*val) * sz;
prop->value = malloc(prop->length);
if (!prop->value)
prop = of_new_property(np, propname, NULL, sizeof(*val) * sz);
if (!prop)
return -ENOMEM;
val = prop->value;
@ -981,16 +971,11 @@ int of_property_write_u32_array(struct device_node *np,
struct property *prop = of_find_property(np, propname, NULL);
__be32 *val;
if (!prop)
prop = of_new_property(np, propname, NULL, 0);
if (!prop)
return -ENOMEM;
if (prop)
of_delete_property(prop);
free(prop->value);
prop->length = sizeof(*val) * sz;
prop->value = malloc(prop->length);
if (!prop->value)
prop = of_new_property(np, propname, NULL, sizeof(*val) * sz);
if (!prop)
return -ENOMEM;
val = prop->value;
@ -1022,16 +1007,11 @@ int of_property_write_u64_array(struct device_node *np,
struct property *prop = of_find_property(np, propname, NULL);
__be32 *val;
if (!prop)
prop = of_new_property(np, propname, NULL, 0);
if (!prop)
return -ENOMEM;
if (prop)
of_delete_property(prop);
free(prop->value);
prop->length = 2 * sizeof(*val) * sz;
prop->value = malloc(prop->length);
if (!prop->value)
prop = of_new_property(np, propname, NULL, 2 * sizeof(*val) * sz);
if (!prop)
return -ENOMEM;
val = prop->value;
@ -1567,26 +1547,19 @@ void of_delete_property(struct property *pp)
int of_set_property(struct device_node *np, const char *name, const void *val, int len,
int create)
{
struct property *pp;
struct property *pp = of_find_property(np, name, NULL);
if (!np)
return -ENOENT;
pp = of_find_property(np, name, NULL);
if (pp) {
void *data;
if (!pp && !create)
return -ENOENT;
free(pp->value);
data = xzalloc(len);
memcpy(data, val, len);
pp->value = data;
pp->length = len;
} else {
if (!create)
return -ENOENT;
of_delete_property(pp);
pp = of_new_property(np, name, val, len);
}
pp = of_new_property(np, name, val, len);
if (!pp)
return -ENOMEM;
return 0;
}
@ -1810,12 +1783,8 @@ void of_free(struct device_node *node)
if (!node)
return;
list_for_each_entry_safe(p, pt, &node->properties, list) {
list_del(&p->list);
free(p->name);
free(p->value);
free(p);
}
list_for_each_entry_safe(p, pt, &node->properties, list)
of_delete_property(p);
list_for_each_entry_safe(n, nt, &node->children, parent_list) {
of_free(n);