Messages in this thread | | | From | Linus Torvalds <> | Date | Thu, 4 Jan 2018 14:23:25 -0800 | Subject | Re: [RFC PATCH] asm/generic: introduce if_nospec and nospec_barrier |
| |
On Thu, Jan 4, 2018 at 2:20 PM, Linus Torvalds <torvalds@linux-foundation.org> wrote: > > #define array_access(base, idx, max) ({ \ > union { typeof(base[0]) _val; unsigned long _bit; } __u;\ > unsigned long _i = (idx); \ > unsigned long _m = (max); \ > unsigned long _mask = _i < _m ? ~0 : 0; \ > OPTIMIZER_HIDE_VAR(_mask); \ > __u._val = base[_i & _mask]; \ > __u._bit &= _mask; \ > __u._val; })
That
__u._val = base[_i & _mask];
thing would have to be READ_ONCE() to make it all ok for the special cases without locking etc.
Linus
| |