RE: [PATCH v5 0/2] Remove false-positive VLAs when using max()

From: David Laight
Date: Thu Mar 22 2018 - 11:12:34 EST


From: Kees Cook
> Sent: 22 March 2018 15:01
...
> > /* Glory to Martin Uecker <Martin.Uecker@xxxxxxxxxxxxxxxxxxxxx> */
> > #define __is_constant(a) \
> > (sizeof(int) == sizeof(*(1 ? ((void*)((a) * 0l)) : (int*)1)))
...
> So, this time it's not a catastrophic failure with gcc 4.4. Instead it
> fails in 11 distinct places:
...
> Seems like it doesn't like void * arguments:
>
> mm/percpu.c:
> void *ptr;
> ...
> base = min(ptr, base);

Try adding (unsigned long) before the (a).

David