[PATCH 5/6] ath6kl: remove a warning on a macro
Joe Perches
joe at perches.com
Mon Mar 10 16:03:30 EDT 2014
On Mon, 2014-03-10 at 19:29 +0200, Kalle Valo wrote:
> Joe Perches <joe at perches.com> writes:
> > On Sun, 2014-03-09 at 09:10 +0200, Kalle Valo wrote:
> >> I would need help with this checkpatch warning:
> > No idea what the warning is.
>
> Hmm, maybe I'll just disable the warning in my check script.
>
> >> > --- a/drivers/net/wireless/ath/ath6kl/debug.c
> >> > +++ b/drivers/net/wireless/ath/ath6kl/debug.c
> >> > @@ -798,12 +798,10 @@ static ssize_t ath6kl_endpoint_stats_read(struct file *file,
> >> > return -ENOMEM;
> >> >
> >> > #define EPSTAT(name) \
> >> > - do { \
> >> > - len = print_endpoint_stat(target, buf, buf_len, len, \
> >> > - offsetof(struct htc_endpoint_stats, \
> >> > - name), \
> >> > - #name); \
> >> > - } while (0)
> >> > + (len = print_endpoint_stat(target, buf, buf_len, len, \
> >> > + offsetof(struct htc_endpoint_stats, \
> >> > + name), \
> >> > + #name))
> >>
> >> I wasn't quite able to figure out what is the preferred style here. I
> >> don't see how the () style is any better, but checkpatch didn't complain
> >> at least.
> >
> > No idea what the preferred style is, but
> > I'd probably change the #define to
> >
> > #define EPSTAT(name) \
> > print_endpoint_stat(target, buf, buf_len, len, \
> > offsetof(struct htc_endpoint_stats, name), \
> > #name)
> >
> > and the uses to
> >
> > len = EPSTAT(whatever);
>
> The problem with this is that using of len as an argument is hidden but
> storing the result is visible. Maybe it's better that I just disable the
> warning for me and not worry about this.
Hey, it's your code, do what you think sensible.
But, I don't think that's the right thing to do.
It _is_ a single line macro and doesn't need
a do {} while (0) wrapper. It also doesn't
need extra parentheses either.
If you don't like the macro, you could always
expand it in-place or change the macro to avoid
passing len and only using the return value as
a +=.
More information about the ath6kl
mailing list