Kees Cook <keesc...@chromium.org> wrote:

> -     return i + xadd(&v->counter, i);
> +     return wrapping_add(int, i, xadd(&v->counter, i));

Ewww.  Can't you just mark the variable as wrapping in some way, either by:

        unsigned int __cyclic counter;

or, to use rxrpc packet sequence numbers as an example:

        typedef unsigned int __cyclic rxrpc_seq_t;

        rxrpc_seq_t     tx_top;

Then you can get the compiler to spit out a warning if you use <, <=, > or >=
on the numbers as an added bonus.  (You should use before() and after()
instead).

David


Reply via email to