Re: [PATCH] staging: greybus: loopback: Enclose multiple macro statements in do-while loop

From: Bryan O'Donoghue
Date: Tue Jul 18 2017 - 07:05:59 EST


On 18/07/17 11:56, karthik@xxxxxxxxxxxx wrote:
From: Karthik Tummala <karthik@xxxxxxxxxxxx>

Enclosed multiple macro statements in a do - while loop as per kernel
coding standard, pointed by checkpatch.

Signed-off-by: Karthik Tummala <karthik@xxxxxxxxxxxx>
---
drivers/staging/greybus/loopback.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/greybus/loopback.c b/drivers/staging/greybus/loopback.c
index 08e2558..c616555 100644
--- a/drivers/staging/greybus/loopback.c
+++ b/drivers/staging/greybus/loopback.c
@@ -176,10 +176,12 @@ static DEVICE_ATTR_RO(name##_##field)
} \
static DEVICE_ATTR_RO(name##_avg)
-#define gb_loopback_stats_attrs(field) \
- gb_loopback_ro_stats_attr(field, min, u); \
- gb_loopback_ro_stats_attr(field, max, u); \
- gb_loopback_ro_avg_attr(field)
+#define gb_loopback_stats_attrs(field) \
+do { \
+ gb_loopback_ro_stats_attr(field, min, u); \
+ gb_loopback_ro_stats_attr(field, max, u); \
+ gb_loopback_ro_avg_attr(field); \
+} while (0)
#define gb_loopback_attr(field, type) \
static ssize_t field##_show(struct device *dev, \

Macros with multiple statements should be enclosed in a do - while block:

.. code-block:: c

#define macrofun(a, b, c) \
do { \
if (a == 5) \
do_this(b, c); \
} while (0)


I don't think it really applies.

We're declaring functions not inlining executable code..