From: David Hildenbrand <david@redhat.com>
To: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
Charan Teja Kalla <quic_charante@quicinc.com>
Cc: akpm@linux-foundation.org, shikemeng@huaweicloud.com,
kasong@tencent.com, nphamcs@gmail.com, bhe@redhat.com,
baohua@kernel.org, chrisl@kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
Matthew Wilcox <willy@infradead.org>
Subject: Re: [PATCH] mm: swap: check for xa_zero_entry() on vma in swapoff path
Date: Mon, 11 Aug 2025 15:03:36 +0200 [thread overview]
Message-ID: <9178bf98-2ea7-4ad8-ad43-cdcc02ab863d@redhat.com> (raw)
In-Reply-To: <fec5ad61-7caf-4076-ba81-7b454ec7018d@lucifer.local>
On 11.08.25 14:14, Lorenzo Stoakes wrote:
> On Mon, Aug 11, 2025 at 03:13:14PM +0530, Charan Teja Kalla wrote:
>> Thanks David, for the reply!!
>> On 8/8/2025 5:34 PM, David Hildenbrand wrote:
>>>> if (mpnt) {
>>>> mas_set_range(&vmi.mas, mpnt->vm_start, mpnt->vm_end - 1);
>>>> mas_store(&vmi.mas, XA_ZERO_ENTRY);
>>>> /* Avoid OOM iterating a broken tree */
>>>> set_bit(MMF_OOM_SKIP, &mm->flags);
>>>> }
>>>> /*
>>>> * The mm_struct is going to exit, but the locks will be dropped
>>>> * first. Set the mm_struct as unstable is advisable as it is
>>>> * not fully initialised.
>>>> */
>>>> set_bit(MMF_UNSTABLE, &mm->flags);
>>>> }
>>>>
>>>> Shouldn't we just remove anything from the tree here that was not copied
>>>> immediately?
>>>
>>> Another fix would be to just check MMF_UNSTABLE in unuse_mm(). But
>>> having these MMF_UNSTABLE checks all over the place feels a bit like
>>> whack-a-mole.
>>>
>> Seems MMF_UNSTABLE is the expectation per the commit,
>> 64c37e134b12("kernel: be more careful about dup_mmap() failures and
>> uprobe registering"). Excerpt(s) from the commit message:
>
> This really is whack-a-mole yeah.
>
>>
>> This patch sets the MMF_OOM_SKIP to avoid the iteration of the vmas on
>> the oom side (even though this is extremely unlikely to be selected as
>> an oom victim in the race window), and __sets MMF_UNSTABLE to avoid
>> other potential users from using a partially initialised mm_struct.
>>
>
> But... maybe this is better for the _hotfix_ version as a nicer way of
> doing this.
I would prefer using MMF_UNSTABLE as a hotfix.
>
>> When registering vmas for uprobe, skip the vmas in an mm that is marked
>> unstable. Modifying a vma in an unstable mm may cause issues if the mm
>> isn't fully initialised.__
>>
>>> Is there anything preventing us from just leaving a proper tree that
>>> reflects reality in place before we drop the write lock?
>>
>> When you mean proper tree, is this about the your previous question? --
>> Shouldn't we just remove anything from the tree here that was not copied
>> immediately?
>
> Commit d24062914837 (" fork: use __mt_dup() to duplicate maple tree in
> dup_mmap()") did this for efficiency, so it'd be a regression to do this.
We're talking about the case where fork *fails*. That cannot possibly be
relevant for performance, can it? :)
--
Cheers,
David / dhildenb
next prev parent reply other threads:[~2025-08-11 13:03 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-08 9:21 [PATCH] mm: swap: check for xa_zero_entry() on vma in swapoff path Charan Teja Kalla
2025-08-08 12:01 ` David Hildenbrand
2025-08-08 12:04 ` David Hildenbrand
2025-08-11 9:43 ` Charan Teja Kalla
2025-08-11 12:14 ` Lorenzo Stoakes
2025-08-11 13:03 ` David Hildenbrand [this message]
2025-08-11 13:08 ` Lorenzo Stoakes
2025-08-11 13:19 ` David Hildenbrand
2025-08-11 13:22 ` Lorenzo Stoakes
2025-08-11 15:17 ` Liam R. Howlett
2025-08-11 15:39 ` David Hildenbrand
2025-08-11 15:48 ` Lorenzo Stoakes
2025-08-11 15:51 ` David Hildenbrand
2025-08-11 15:48 ` Liam R. Howlett
2025-08-11 12:07 ` Lorenzo Stoakes
2025-08-11 16:29 ` Charan Teja Kalla
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=9178bf98-2ea7-4ad8-ad43-cdcc02ab863d@redhat.com \
--to=david@redhat.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=bhe@redhat.com \
--cc=chrisl@kernel.org \
--cc=kasong@tencent.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=nphamcs@gmail.com \
--cc=quic_charante@quicinc.com \
--cc=shikemeng@huaweicloud.com \
--cc=willy@infradead.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.