]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
device property: Use tidy for_each_named_* macros
authorMatti Vaittinen <mazziesaccount@gmail.com>
Mon, 9 Jun 2025 07:26:47 +0000 (10:26 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 1 Jul 2025 10:31:37 +0000 (12:31 +0200)
Implementing if-conditions inside for_each_x() macros requires some
thinking to avoid side effects in the calling code. Resulting code
may look somewhat awkward, and there are couple of different ways it is
usually done.

Standardizing this to one way can help making it more obvious for a code
reader and writer. The newly added for_each_if() is a way to achieve this.

Use for_each_if() to make these macros look like many others which
should in the long run help reading the code.

Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/c98b39a7195006fdd24590b8d11bb271a72a0c8a.1749453752.git.mazziesaccount@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/property.h

index f718dd4789e51b6eedfcd5602e87bbe94836c273..82f0cb3abd1e229f7fc009f3ee2f211e6d003e51 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/fwnode.h>
 #include <linux/stddef.h>
 #include <linux/types.h>
+#include <linux/util_macros.h>
 
 struct device;
 
@@ -169,7 +170,7 @@ struct fwnode_handle *fwnode_get_next_available_child_node(
 
 #define fwnode_for_each_named_child_node(fwnode, child, name)          \
        fwnode_for_each_child_node(fwnode, child)                       \
-               if (!fwnode_name_eq(child, name)) { } else
+               for_each_if(fwnode_name_eq(child, name))
 
 #define fwnode_for_each_available_child_node(fwnode, child)                   \
        for (child = fwnode_get_next_available_child_node(fwnode, NULL); child;\
@@ -184,7 +185,7 @@ struct fwnode_handle *device_get_next_child_node(const struct device *dev,
 
 #define device_for_each_named_child_node(dev, child, name)             \
        device_for_each_child_node(dev, child)                          \
-               if (!fwnode_name_eq(child, name)) { } else
+               for_each_if(fwnode_name_eq(child, name))
 
 #define device_for_each_child_node_scoped(dev, child)                  \
        for (struct fwnode_handle *child __free(fwnode_handle) =        \
@@ -193,7 +194,7 @@ struct fwnode_handle *device_get_next_child_node(const struct device *dev,
 
 #define device_for_each_named_child_node_scoped(dev, child, name)      \
        device_for_each_child_node_scoped(dev, child)                   \
-               if (!fwnode_name_eq(child, name)) { } else
+               for_each_if(fwnode_name_eq(child, name))
 
 struct fwnode_handle *fwnode_get_named_child_node(const struct fwnode_handle *fwnode,
                                                  const char *childname);