RE: [PATCH] crypto: caam - Avoid GCC memset bug warning

From: David Laight
Date: Sat Dec 31 2022 - 11:46:43 EST


From: Herbert Xu
> Sent: 29 December 2022 01:49
>
> On Wed, Dec 28, 2022 at 12:30:35PM +0100, Uwe Kleine-König wrote:
> >
> > > - if (len) /* avoid sparse warning: memcpy with byte count of 0 */
> > > + /* Avoid gcc warning: memcpy with data == NULL */
> > > + if (!IS_ENABLED(CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG) || data)
> >
> > I just tried: For me a plain
> >
> > if (data)
> >
> > is also enough to make both gcc and sparse happy.
>
> Of course it is. The point of the extra condition is to remove
> the unnecessary check on data unless we are in debugging mode
> (as it is only needed in debugging mode to work around the buggy
> compiler).

IIRC the 'problematic' case is one where 'len' and 'data'
are actually compile-time zeros - in which case you don't
want to call memcpy() at all.
In all other cases I think there is something to copy so you
don't really want the check (or the one in memcpy() will do).

Whether (builtin_constant_p(data) && !data) is good enough is
another matter.
It might need the (sizeof *(1 ? (void *)(data) : (int *)0) == 1)
test.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)