2017-07-18 10:56:58

by karthik

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

From: Karthik Tummala <[email protected]>

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

Signed-off-by: Karthik Tummala <[email protected]>
---
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, \
--
1.9.1


2017-07-18 11:04:28

by Johan Hovold

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

On Tue, Jul 18, 2017 at 04:26:40PM +0530, [email protected] wrote:
> From: Karthik Tummala <[email protected]>
>
> Enclosed multiple macro statements in a do - while loop as per kernel
> coding standard, pointed by checkpatch.
\
> 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)

You obviously did not even compile-test this before submitting it, which
needless to say, is not ok.

Johan

2017-07-18 11:05:55

by Bryan O'Donoghue

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

On 18/07/17 11:56, [email protected] wrote:
> From: Karthik Tummala <[email protected]>
>
> Enclosed multiple macro statements in a do - while loop as per kernel
> coding standard, pointed by checkpatch.
>
> Signed-off-by: Karthik Tummala <[email protected]>
> ---
> 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..

2017-07-19 06:40:43

by karthik

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

On Tuesday 18 July 2017 04:41 PM, Bryan O'Donoghue wrote:
> On 18/07/17 11:56, [email protected] wrote:
>> From: Karthik Tummala <[email protected]>
>>
>> Enclosed multiple macro statements in a do - while loop as per kernel
>> coding standard, pointed by checkpatch.
>>
>> Signed-off-by: Karthik Tummala <[email protected]>
>> ---
>> 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.Hi,
It makes sense, thanks for the insight. Please drop this patch

Thanks