Re: [PATCH v9] mmc: Export host capabilities to debugfs.

From: Andy Shevchenko
Date: Mon Mar 12 2018 - 09:03:38 EST


On Mon, 2018-03-12 at 18:00 +0530, Harish Jenny K N wrote:


> > > > > > + for_each_set_bit(bit, (const unsigned long *)&caps,
> > > > > > BITS_PER_LONG)
> > > > > > + for_each_set_bit(bit, (const unsigned long
> > > > > > *)&caps2,
> > > > > > BITS_PER_LONG)
> > > > >
> > > > > Explicit casting is not needed anymore in both cases.
> > > >
> > > > Also maybe use sizeof(mmc_host_capabilities) instead of
> > > > BITS_PER_LONG?
> > >
> > > You mean sizeof(caps) and not sizeof(mmc_host_capabilities) .
> > > Right ?
> >
> > meant ARRAY_SIZE(mmc_host_capabilities)

> ARRAY_SIZE(mmc_host_capabilities) will be 32 and this will be my old
> change for which I got a comment from Andy Shevchenko asking me to
> replace u32 with unsigned long.
>
> This is the old comment:
>
> > > + int size = sizeof(u32) * BITS_PER_BYTE;
> >
> > This is redundant. Use BITS_PER_LONG (why's that, see below) in the

There is nothing about ARRAY_SIZE().
ARRAY_SIZE() will work quite good as well.

> for_each_set_bit().
>
> > > + for_each_set_bit(bit, (const unsigned long *)&caps, size)
> > > + for_each_set_bit(bit, (const unsigned long *)&caps2, size)
> >
> > These are UB cases.
> > Fix is simple, replace u32 by unsigned long in (1) above.
>
> Note: Without typecasting &caps to(const unsigned long *) will give
> compilation error in this case.

What kind of?

--
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
Intel Finland Oy