On 10/13/17 13:47, Rob Herring wrote: > On Thu, Oct 12, 2017 at 8:42 PM, alawang <alan.1.wang@xxxxxxxxxxxxxxx> wrote: >> It is possible a node was dynamically allocated but without any >> property. The properies will be got from devices and added to the >> node when devices got connected. >> When release this node, all properties of which had been moved to >> deadprops. >> In this case, the properties in the deadprops list are never >> deallocated. > > This is not new, right? Do you actually hit this case? If so, how? > >> >> Signed-off-by: alawang <alan.1.wang@xxxxxxxxxxxxxxx> >> --- >> drivers/of/dynamic.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c >> index 301b6db..465d43b 100644 >> --- a/drivers/of/dynamic.c >> +++ b/drivers/of/dynamic.c >> @@ -335,6 +335,10 @@ void of_node_release(struct kobject *kobj) >> if (!of_node_check_flag(node, OF_DYNAMIC)) >> return; >> >> + if (!prop) { >> + prop = node->deadprops; >> + node->deadprops = NULL; >> + } >> while (prop) { >> struct property *next = prop->next; >> kfree(prop->name); >> -- >> 2.6.2 >> >> -- >> 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 > The code looks right to me. The patch description is confusing to me. If a node with no properties is dynamically added, then a property is dynamically added to the node, then the property is dynamically removed, the result will be node->properties == NULL and node->deadprops != NULL. Reviewed-by: Frank Rowand <frowand.list@xxxxxxxxx> -- 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