From: Jason Gunthorpe <jgg@nvidia.com>
To: David Hildenbrand <david@redhat.com>
Cc: John Hubbard <jhubbard@nvidia.com>,
Yang Shi <shy828301@gmail.com>,
peterx@redhat.com, kirill.shutemov@linux.intel.com,
hughd@google.com, akpm@linux-foundation.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mm: gup: fix the fast GUP race against THP collapse
Date: Tue, 6 Sep 2022 10:47:55 -0300 [thread overview]
Message-ID: <YxdPi2E63aO0Dgyd@nvidia.com> (raw)
In-Reply-To: <a969abc5-1ad0-4073-a1f9-82f0431a0104@redhat.com>
On Mon, Sep 05, 2022 at 09:59:47AM +0200, David Hildenbrand wrote:
> > That should be READ_ONCE() for the *pmdp and *ptep reads. Because this
> > whole lockless house of cards may fall apart if we try reading the
> > page table values without READ_ONCE().
>
> I came to the conclusion that the implicit memory barrier when grabbing a
> reference on the page is sufficient such that we don't need READ_ONCE here.
READ_ONCE is not about barriers or ordering, you still need the
acquire inside the atomic to make the algorithm work.
READ_ONCE primarily is a marker that the data being read is unstable
and that the compiler must avoid all instability when reading it. eg
in this case the compiler could insanely double read the value, even
though the 'if' requires only a single read. This would result in
corrupt calculation.
> If we still intend to change that code, we should fixup all GUP-fast
> functions in a similar way.
This is correct, IMHO we have been slowly modernizing the mm approach
to the memory model to include things like this. While it would be
nice to do everything I think small bits are welcomed as the are
discovered.
Jason
next prev parent reply other threads:[~2022-09-06 14:23 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-01 22:27 [PATCH] mm: gup: fix the fast GUP race against THP collapse Yang Shi
2022-09-01 23:26 ` Peter Xu
2022-09-01 23:50 ` Yang Shi
2022-09-02 6:39 ` David Hildenbrand
2022-09-02 15:23 ` Yang Shi
2022-09-02 15:59 ` Peter Xu
2022-09-02 16:04 ` Peter Xu
2022-09-02 17:30 ` Yang Shi
2022-09-02 17:45 ` Yang Shi
2022-09-02 20:33 ` Peter Xu
2022-09-05 8:56 ` Aneesh Kumar K.V
2022-09-05 8:54 ` Aneesh Kumar K.V
2022-09-06 19:07 ` Yang Shi
2022-09-07 4:50 ` Aneesh Kumar K V
2022-09-07 17:08 ` Yang Shi
2022-09-04 22:21 ` John Hubbard
2022-09-02 6:42 ` David Hildenbrand
2022-09-04 22:29 ` John Hubbard
2022-09-05 7:59 ` David Hildenbrand
2022-09-05 10:16 ` Baolin Wang
2022-09-05 10:24 ` David Hildenbrand
2022-09-05 11:11 ` David Hildenbrand
2022-09-05 14:35 ` Baolin Wang
2022-09-05 14:40 ` David Hildenbrand
2022-09-06 5:53 ` Baolin Wang
2022-09-06 2:12 ` John Hubbard
2022-09-06 12:50 ` David Hildenbrand
2022-09-06 13:47 ` Jason Gunthorpe [this message]
2022-09-06 13:57 ` David Hildenbrand
2022-09-06 14:30 ` Jason Gunthorpe
2022-09-06 14:44 ` David Hildenbrand
2022-09-06 15:33 ` Jason Gunthorpe
2022-09-06 19:11 ` Yang Shi
2022-09-06 23:16 ` John Hubbard
2022-09-06 19:01 ` Yang Shi
2022-09-05 9:03 ` Baolin Wang
2022-09-06 18:50 ` Yang Shi
2022-09-06 21:27 ` John Hubbard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YxdPi2E63aO0Dgyd@nvidia.com \
--to=jgg@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=hughd@google.com \
--cc=jhubbard@nvidia.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=peterx@redhat.com \
--cc=shy828301@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).