From: Peter Xu <peterx@redhat.com>
To: linux-kernel@vger.kernel.org, linux-mm@kvack.org
Cc: David Hildenbrand <david@redhat.com>,
Alistair Popple <apopple@nvidia.com>,
Andrew Morton <akpm@linux-foundation.org>,
Andrea Arcangeli <aarcange@redhat.com>,
"Kirill A . Shutemov" <kirill@shutemov.name>,
Johannes Weiner <hannes@cmpxchg.org>,
John Hubbard <jhubbard@nvidia.com>,
Naoya Horiguchi <naoya.horiguchi@nec.com>,
peterx@redhat.com,
Muhammad Usama Anjum <usama.anjum@collabora.com>,
Hugh Dickins <hughd@google.com>, Mike Rapoport <rppt@kernel.org>
Subject: [PATCH 0/4] mm: Fix pmd_trans_unstable() call sites on retry
Date: Fri, 2 Jun 2023 19:05:48 -0400 [thread overview]
Message-ID: <20230602230552.350731-1-peterx@redhat.com> (raw)
When hit pmd_trans_unstable() under mmap read lock, it means we raced with
something else. Per the comment above the helper, we can definitely treat
it as some pmd (none?) but the 100% correct way is always retry, and I
don't think it should race again in most cases.
Not taking care of that retry can mean different things on different
paths.
For example, for smaps it means inaccurate accountings when we skip those
raced regions, but it's fine anyway because the accounting is not for 100%
accurate.
I think it's broken for pagemap OTOH, because we have the pagemap buffer
linear to the VA we're scanning, it means if we skip some region the follow
up scans can fill in the wrong slots, I think. It means the pagemap
results returned to userapp will be wrong when very unlucky.
This reminded me that I should have a look at all call sites of
pmd_trans_unstable(), some of them are alright but I do see many of them
may still be better to give another shot when hit.
This series tries to resolve all call sites for it on that retry attempt.
I really don't know whether I missed something, even if not, whether it
matters a lot to anyone. Still, _if_ I'm correct may worth consider
fixing. Happy to be prove wrong. Then Muhammad should know how to code
his.
The patchset is only smoke tested, nothing wrong I see.
Please have a look, thanks.
Peter Xu (4):
mm/mprotect: Retry on pmd_trans_unstable()
mm/migrate: Unify and retry an unstable pmd when hit
mm: Warn for unstable pmd in move_page_tables()
mm: Make most walk page paths with pmd_trans_unstable() to retry
fs/proc/task_mmu.c | 17 +++++++++++++----
mm/madvise.c | 8 ++++++--
mm/memcontrol.c | 8 ++++++--
mm/memory-failure.c | 4 +++-
mm/mempolicy.c | 4 +++-
mm/migrate_device.c | 9 ++++-----
mm/mprotect.c | 20 +++++++++++---------
mm/mremap.c | 4 ++--
8 files changed, 48 insertions(+), 26 deletions(-)
--
2.40.1
next reply other threads:[~2023-06-02 23:06 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-02 23:05 Peter Xu [this message]
2023-06-02 23:05 ` [PATCH 1/4] mm/mprotect: Retry on pmd_trans_unstable() Peter Xu
2023-06-03 2:04 ` Yang Shi
2023-06-04 23:58 ` Peter Xu
2023-06-02 23:05 ` [PATCH 2/4] mm/migrate: Unify and retry an unstable pmd when hit Peter Xu
2023-06-02 23:05 ` [PATCH 3/4] mm: Warn for unstable pmd in move_page_tables() Peter Xu
2023-06-02 23:05 ` [PATCH 4/4] mm: Make most walk page paths with pmd_trans_unstable() to retry Peter Xu
2023-06-05 18:46 ` Yang Shi
2023-06-05 19:20 ` Peter Xu
2023-06-06 19:12 ` Yang Shi
2023-06-06 19:59 ` Peter Xu
2023-06-07 13:49 ` [PATCH 0/4] mm: Fix pmd_trans_unstable() call sites on retry Peter Xu
2023-06-07 15:45 ` David Hildenbrand
2023-06-07 16:21 ` Peter Xu
2023-06-07 16:39 ` Yang Shi
2023-06-07 18:22 ` Peter Xu
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=20230602230552.350731-1-peterx@redhat.com \
--to=peterx@redhat.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=david@redhat.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=jhubbard@nvidia.com \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=naoya.horiguchi@nec.com \
--cc=rppt@kernel.org \
--cc=usama.anjum@collabora.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
all inboxes | Powered by JetHome®