From: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
To: Vlastimil Babka <vbabka@suse.cz>
Cc: Suren Baghdasaryan <surenb@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@kernel.org>,
"Liam R . Howlett" <Liam.Howlett@oracle.com>,
Mike Rapoport <rppt@kernel.org>, Michal Hocko <mhocko@suse.com>,
Shakeel Butt <shakeel.butt@linux.dev>,
Jann Horn <jannh@google.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-rt-devel@lists.linux.dev,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Will Deacon <will@kernel.org>,
Boqun Feng <boqun.feng@gmail.com>,
Waiman Long <longman@redhat.com>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Clark Williams <clrkwllms@kernel.org>,
Steven Rostedt <rostedt@goodmis.org>
Subject: Re: [PATCH RESEND v3 08/10] mm/vma: improve and document __is_vma_write_locked()
Date: Fri, 23 Jan 2026 18:44:51 +0000 [thread overview]
Message-ID: <0019bd45-be27-43b5-bf80-1f8836c2ea91@lucifer.local> (raw)
In-Reply-To: <b267b699-f312-4387-8dc0-a14efe72561a@suse.cz>
On Fri, Jan 23, 2026 at 05:21:26PM +0100, Vlastimil Babka wrote:
> On 1/22/26 22:55, Suren Baghdasaryan wrote:
> > On Thu, Jan 22, 2026 at 5:02 AM Lorenzo Stoakes
> > <lorenzo.stoakes@oracle.com> wrote:
> >>
> >> The function is a little confusing, clean it up a little then add a
> >> descriptive comment.
> >
> > I appreciate the descriptive comment but what exactly was confusing in
> > this function?
> >
> >>
> >> No functional change intended.
> >>
> >> Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
> >> ---
> >> include/linux/mmap_lock.h | 23 ++++++++++++++++++-----
> >> 1 file changed, 18 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h
> >> index 873bc5f3c97c..b00d34b5ad10 100644
> >> --- a/include/linux/mmap_lock.h
> >> +++ b/include/linux/mmap_lock.h
> >> @@ -252,17 +252,30 @@ static inline void vma_end_read(struct vm_area_struct *vma)
> >> vma_refcount_put(vma);
> >> }
> >>
> >> -/* WARNING! Can only be used if mmap_lock is expected to be write-locked */
> >> -static inline bool __is_vma_write_locked(struct vm_area_struct *vma, unsigned int *mm_lock_seq)
> >> +/*
> >> + * Determine whether a VMA is write-locked. Must be invoked ONLY if the mmap
> >> + * write lock is held.
> >> + *
> >> + * Returns true if write-locked, otherwise false.
> >> + *
> >> + * Note that mm_lock_seq is updated only if the VMA is NOT write-locked.
>
> Could it also say to what it's updated to? Or is it too obvious?
>
> >
> > True, this does not result in a functional change because we do not
> > use mm_lock_seq if __is_vma_write_locked() succeeds. However this
> > seems to add additional gotcha that you need to remember. Any reason
> > why?
>
> Actually I wonder if it's really worth returning the mm_lock_seq and passing
> it to __vma_start_write(), which could just determine it on its own. It
> would simplify things.
I mean don't we have to worry about racing vma_end_write_all()'s?
I suppose not as you have to have the mmap write lock here exclusively, and
we (lockdep) assert we own it, so we can probably safely assume the mm
value is OK.
It'd be good to drop this parameter.
I see Suren approves so have done so... :)
>
> >> + */
> >> +static inline bool __is_vma_write_locked(struct vm_area_struct *vma,
> >> + unsigned int *mm_lock_seq)
> >> {
> >> - mmap_assert_write_locked(vma->vm_mm);
> >> + struct mm_struct *mm = vma->vm_mm;
> >> + const unsigned int seq = mm->mm_lock_seq.sequence;
> >> +
> >> + mmap_assert_write_locked(mm);
> >>
> >> /*
> >> * current task is holding mmap_write_lock, both vma->vm_lock_seq and
> >> * mm->mm_lock_seq can't be concurrently modified.
> >> */
> >> - *mm_lock_seq = vma->vm_mm->mm_lock_seq.sequence;
> >> - return (vma->vm_lock_seq == *mm_lock_seq);
> >> + if (vma->vm_lock_seq == seq)
> >> + return true;
> >> + *mm_lock_seq = seq;
> >> + return false;
> >> }
> >>
> >> int __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq,
> >> --
> >> 2.52.0
>
next prev parent reply other threads:[~2026-01-23 18:45 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-22 13:01 [PATCH RESEND v3 00/10] mm: add and use vma_assert_stabilised() helper Lorenzo Stoakes
2026-01-22 13:01 ` [PATCH RESEND v3 01/10] mm/vma: rename VMA_LOCK_OFFSET to VM_REFCNT_EXCLUDE_READERS_FLAG Lorenzo Stoakes
2026-01-22 16:26 ` Vlastimil Babka
2026-01-22 16:29 ` Lorenzo Stoakes
2026-01-23 13:52 ` Lorenzo Stoakes
2026-01-22 16:37 ` Suren Baghdasaryan
2026-01-23 13:26 ` Lorenzo Stoakes
2026-01-22 13:01 ` [PATCH RESEND v3 02/10] mm/vma: document possible vma->vm_refcnt values and reference comment Lorenzo Stoakes
2026-01-22 16:48 ` Vlastimil Babka
2026-01-22 17:28 ` Suren Baghdasaryan
2026-01-23 15:06 ` Lorenzo Stoakes
2026-01-23 13:45 ` Lorenzo Stoakes
2026-01-22 13:01 ` [PATCH RESEND v3 03/10] mm/vma: rename is_vma_write_only(), separate out shared refcount put Lorenzo Stoakes
2026-01-22 17:36 ` Vlastimil Babka
2026-01-22 19:31 ` Suren Baghdasaryan
2026-01-23 8:24 ` Vlastimil Babka
2026-01-23 14:52 ` Lorenzo Stoakes
2026-01-23 15:05 ` Vlastimil Babka
2026-01-23 15:07 ` Lorenzo Stoakes
2026-01-23 14:41 ` Lorenzo Stoakes
2026-01-26 10:04 ` Lorenzo Stoakes
2026-01-23 14:02 ` Lorenzo Stoakes
2026-01-22 13:01 ` [PATCH RESEND v3 04/10] mm/vma: add+use vma lockdep acquire/release defines Lorenzo Stoakes
2026-01-22 19:32 ` Suren Baghdasaryan
2026-01-22 19:41 ` Suren Baghdasaryan
2026-01-23 8:41 ` Vlastimil Babka
2026-01-23 15:08 ` Lorenzo Stoakes
2026-01-23 15:00 ` Lorenzo Stoakes
2026-01-23 8:48 ` Vlastimil Babka
2026-01-23 15:10 ` Lorenzo Stoakes
2026-01-22 13:01 ` [PATCH RESEND v3 05/10] mm/vma: de-duplicate __vma_enter_locked() error path Lorenzo Stoakes
2026-01-22 19:39 ` Suren Baghdasaryan
2026-01-23 15:11 ` Lorenzo Stoakes
2026-01-23 8:54 ` Vlastimil Babka
2026-01-23 15:10 ` Lorenzo Stoakes
2026-01-22 13:01 ` [PATCH v3 06/10] mm/vma: clean up __vma_enter/exit_locked() Lorenzo Stoakes
2026-01-22 13:08 ` Lorenzo Stoakes
2026-01-22 20:15 ` Suren Baghdasaryan
2026-01-22 20:55 ` Andrew Morton
2026-01-23 16:15 ` Lorenzo Stoakes
2026-01-23 16:33 ` Lorenzo Stoakes
2026-01-23 9:16 ` Vlastimil Babka
2026-01-23 16:17 ` Lorenzo Stoakes
2026-01-23 16:28 ` Lorenzo Stoakes
2026-01-22 13:01 ` [PATCH RESEND v3 07/10] mm/vma: introduce helper struct + thread through exclusive lock fns Lorenzo Stoakes
2026-01-22 21:41 ` Suren Baghdasaryan
2026-01-23 17:59 ` Lorenzo Stoakes
2026-01-23 19:34 ` Suren Baghdasaryan
2026-01-23 20:04 ` Lorenzo Stoakes
2026-01-23 22:07 ` Suren Baghdasaryan
2026-01-24 8:54 ` Lorenzo Stoakes
2026-01-26 6:09 ` Suren Baghdasaryan
2026-01-23 10:02 ` Vlastimil Babka
2026-01-23 18:18 ` Lorenzo Stoakes
2026-01-22 13:02 ` [PATCH RESEND v3 08/10] mm/vma: improve and document __is_vma_write_locked() Lorenzo Stoakes
2026-01-22 21:55 ` Suren Baghdasaryan
2026-01-23 16:21 ` Vlastimil Babka
2026-01-23 17:42 ` Suren Baghdasaryan
2026-01-23 18:44 ` Lorenzo Stoakes [this message]
2026-01-22 13:02 ` [PATCH RESEND v3 09/10] mm/vma: update vma_assert_locked() to use lockdep Lorenzo Stoakes
2026-01-22 22:02 ` Suren Baghdasaryan
2026-01-23 18:45 ` Lorenzo Stoakes
2026-01-23 16:55 ` Vlastimil Babka
2026-01-23 18:49 ` Lorenzo Stoakes
2026-01-22 13:02 ` [PATCH RESEND v3 10/10] mm/vma: add and use vma_assert_stabilised() Lorenzo Stoakes
2026-01-22 22:12 ` Suren Baghdasaryan
2026-01-23 18:54 ` Lorenzo Stoakes
2026-01-23 17:10 ` Vlastimil Babka
2026-01-23 18:51 ` Lorenzo Stoakes
2026-01-23 23:35 ` Hillf Danton
2026-01-22 15:48 ` [PATCH RESEND v3 00/10] mm: add and use vma_assert_stabilised() helper Andrew Morton
2026-01-22 15:57 ` Lorenzo Stoakes
2026-01-22 16:01 ` Lorenzo Stoakes
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=0019bd45-be27-43b5-bf80-1f8836c2ea91@lucifer.local \
--to=lorenzo.stoakes@oracle.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=bigeasy@linutronix.de \
--cc=boqun.feng@gmail.com \
--cc=clrkwllms@kernel.org \
--cc=david@kernel.org \
--cc=jannh@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-rt-devel@lists.linux.dev \
--cc=longman@redhat.com \
--cc=mhocko@suse.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=rppt@kernel.org \
--cc=shakeel.butt@linux.dev \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
--cc=will@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox