Re: [PATCH v2] mm: Add an explicit smp_wmb() to UFFDIO_CONTINUE

From: Peter Xu
Date: Wed Mar 06 2024 - 20:20:52 EST


On Thu, Mar 07, 2024 at 01:02:50AM +0000, James Houghton wrote:
> Users of UFFDIO_CONTINUE may reasonably assume that a write memory
> barrier is included as part of UFFDIO_CONTINUE. That is, a user may
> believe that all writes it has done to a page that it is now
> UFFDIO_CONTINUE'ing are guaranteed to be visible to anyone subsequently
> reading the page through the newly mapped virtual memory region.
>
> Today, such a user happens to be correct. mmget_not_zero(), for example,
> is called as part of UFFDIO_CONTINUE (and comes before any PTE updates),
> and it implicitly gives us a write barrier.
>
> To be resilient against future changes, include an explicit smp_wmb().
> While we're at it, optimize the smp_wmb() that is already incidentally
> present for the HugeTLB case.
>
> Merely making a syscall does not generally imply the memory ordering
> constraints that we need (including on x86).
>
> Signed-off-by: James Houghton <jthoughton@xxxxxxxxxx>

Reviewed-by: Peter Xu <peterx@xxxxxxxxxx>

--
Peter Xu