Re: [PATCH] kernel: sys: fix potential Spectre v1

From: Peter Zijlstra
Date: Wed May 23 2018 - 04:15:22 EST



Sorry for being late to the party..

On Wed, May 23, 2018 at 12:03:57AM -0500, Gustavo A. R. Silva wrote:

> +#define validate_index_nospec(index, size) \
> +({ \
> + bool ret = true; \
> + typeof(index) *ptr = &(index); \
> + typeof(size) _s = (size); \
> + \
> + BUILD_BUG_ON(sizeof(*ptr) > sizeof(long)); \
> + BUILD_BUG_ON(sizeof(_s) > sizeof(long)); \
> + \
> + if (*ptr >= size) \
> + ret = false; \
> + \
> + *ptr = array_index_nospec(*ptr, _s); \
> + \
> + ret; \
> +})

Would not something like:

bool ret = false;

....

if (*ptr < _s) {
*ptr = array_index_nospec(*ptr, _s);
ret = true;
}

ret;

be more obvious?