Hello Pantelis, On 07/11/13 21:17, ext Pantelis Antoniou wrote: > Introduce helper functions for working with the live DT tree. > > __of_free_property() frees a dynamically created property > __of_free_tree() recursively frees a device node tree > __of_copy_property() copies a property dynamically > __of_create_empty_node() creates an empty node > __of_find_node_by_full_name() finds the node with the full name > and > of_multi_prop_cmp() performs a multi property compare but without > having to take locks. > > Signed-off-by: Pantelis Antoniou <panto@xxxxxxxxxxxxxxxxxxxxxxx> > --- > drivers/of/Makefile | 2 +- > drivers/of/util.c | 253 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > include/linux/of.h | 59 ++++++++++++ > 3 files changed, 313 insertions(+), 1 deletion(-) > create mode 100644 drivers/of/util.c > ... > +struct property *__of_copy_property(const struct property *prop, gfp_t flags) > +{ > + struct property *propn; > + > + propn = kzalloc(sizeof(*prop), flags); > + if (propn == NULL) > + return NULL; > + > + propn->name = kstrdup(prop->name, flags); > + if (propn->name == NULL) > + goto err_fail_name; > + > + if (prop->length > 0) { ^^^^^^^^^^^^^^^^^^^^^^^ As Ioan already mentioned, this is really a problem. There is a bunch of places, where properties without values are used. Like gpio-controller; ranges; interrupt-controller; Refer, for example, to of_irq_map_raw() which checks of_get_property(ipar, "interrupt-controller", NULL) != NULL and some other occurrences of exactly same construct. This will simply be broken for merged device-tree parts. > + propn->value = kmalloc(prop->length, flags); > + if (propn->value == NULL) > + goto err_fail_value; > + memcpy(propn->value, prop->value, prop->length); > + propn->length = prop->length; > + } > + > + /* mark the property as dynamic */ > + of_property_set_flag(propn, OF_DYNAMIC); > + > + return propn; > + > +err_fail_value: > + kfree(propn->name); > +err_fail_name: > + kfree(propn); > + return NULL; > +} > + ... -- Best regards, Alexander Sverdlin. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html