On Wed, May 23, 2018 at 2:08 AM, Peter Zijlstra <pet...@infradead.org> wrote: > > 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?
Yes, that looks even better to me.