diff mbox series

[net-next,1/3] device property: Introduce fwnode_for_each_available_child_node_scoped()

Message ID 20241008-mv88e6xxx_leds_fwnode_put-v1-1-cfd7758cd176@gmail.com
State New
Headers show
Series net, device property: fix led node releases in mv88e6xxx with new macro | expand

Commit Message

Javier Carrasco Oct. 8, 2024, 4:10 p.m. UTC
Introduce the scoped variant of the
fwnode_for_each_available_child_node() to automatically decrement the
child's refcount when it goes out of scope, removing the need for
explicit calls to fwnode_handle_put().

Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
 include/linux/property.h | 5 +++++
 1 file changed, 5 insertions(+)
diff mbox series

Patch

diff --git a/include/linux/property.h b/include/linux/property.h
index 61fc20e5f81f..b37508ecf606 100644
--- a/include/linux/property.h
+++ b/include/linux/property.h
@@ -168,6 +168,11 @@  struct fwnode_handle *fwnode_get_next_available_child_node(
 	for (child = fwnode_get_next_available_child_node(fwnode, NULL); child;\
 	     child = fwnode_get_next_available_child_node(fwnode, child))
 
+#define fwnode_for_each_available_child_node_scoped(fwnode, child)	       \
+	for (struct fwnode_handle *child __free(fwnode_handle) =	       \
+		fwnode_get_next_available_child_node(fwnode, NULL); child;     \
+	     child = fwnode_get_next_available_child_node(fwnode, child))
+
 struct fwnode_handle *device_get_next_child_node(const struct device *dev,
 						 struct fwnode_handle *child);