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?

Reply via email to