----- On Jul 2, 2018, at 10:18 PM, Linus Torvalds torva...@linux-foundation.org wrote:
> On Mon, Jul 2, 2018 at 7:01 PM Mathieu Desnoyers > <mathieu.desnoy...@efficios.com> wrote: >> >> One thing to consider is how we will implement the load of that pointer >> on the kernel side. > > Use "get_user()". It works for 64-bit objects too, and it will be > atomic in the 32-bit sub-parts on a 32-bit architecture. Is it really ? Last time we had this discussion, not all architectures guaranteed that reading a 64-bit integer would happen in two atomic 32-bit sub-parts. This was the main motivation for the LINUX_FIELD_u32_u64() macro as it stands today (rather than using a union). > > Again: there is no point in trying to be atomic in the full 64 bits > (when you're running on 32-bit). The upper bits don't have to "match" > the lower bits. They just have to be zero. So doing it as two loads is > fine - the same way it's perfectly fine to do it as two stores (since > the store to the upper bits will always be zero). I'd be fine with two atomic loads, but I'd rather have a strong confirmation about this, because last time around there were architectures where it was not true as far as I recall. Thanks, Mathieu > > Linus -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com