Hi Daniel, Andy, On Mon, Oct 19, 2020 at 11:58:55PM +0100, Daniel Scally wrote: > Software nodes that are children of another software node should be > unregistered before their parent. To allow easy unregistering of an array > of software_nodes ordered parent to child, add a helper function to loop > over and unregister nodes in such an array in reverse order. > > Suggested-by: Andriy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Signed-off-by: Daniel Scally <djrscally@xxxxxxxxx> > --- > Changes in v3: > - patch introduced. > > drivers/base/swnode.c | 21 +++++++++++++++++++++ > include/linux/property.h | 1 + > 2 files changed, 22 insertions(+) > > diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c > index 010828fc7..f01b1cc61 100644 > --- a/drivers/base/swnode.c > +++ b/drivers/base/swnode.c > @@ -727,6 +727,27 @@ void software_node_unregister_nodes(const struct software_node *nodes) > } > EXPORT_SYMBOL_GPL(software_node_unregister_nodes); > > +/** > + * software_node_unregister_nodes_reverse - Unregister an array of software > + * nodes in reverse order. > + * @nodes: Array of software nodes to be unregistered. > + * > + * NOTE: The same warning applies as with software_node_unregister_nodes. > + * Unless you are _sure_ that the array of nodes is ordered parent to child > + * it is wiser to remove them individually in the correct order. Could the default order in software_node_unregister_nodes() be reversed instead? There are no users so this should be easy to change. Doing this only one way may require enforcing the registration order in software_node_register_nodes(), but the end result would be safer. What do you think? -- Regards, Sakari Ailus