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.

Reply via email to