All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yajun Deng" <yajun.deng@linux.dev>
To: "David Hildenbrand" <david@redhat.com>, akpm@linux-foundation.org
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mm/rmap: remove unnecessary page_table_lock
Date: Tue, 23 Apr 2024 08:35:03 +0000	[thread overview]
Message-ID: <b6ea1fb5bc6c06d2855e41b4034656b0a76b58f5@linux.dev> (raw)
In-Reply-To: <fd7fde90-21ea-4617-be17-ba387b44feaf@redhat.com>

April 23, 2024 at 4:18 PM, "David Hildenbrand" <david@redhat.com> wrote:



> 
> On 23.04.24 09:53, Yajun Deng wrote:
> 
> > 
> > April 22, 2024 at 7:24 PM, "David Hildenbrand" <david@redhat.com> wrote:
> > 
> >  > >>
> > 
> > > 
> > > On 22.04.24 12:52, Yajun Deng wrote:
> > > 
> > 
> >  page_table_lock is a lock that for page table, we won't change page
> > 
> >  table in __anon_vma_prepare(). As we can see, it works well in
> > 
> >  anon_vma_clone(). They do the same operation.
> > 
> > > 
> > > We are reusing mm->page_table_lock to serialize, not the *actual* low-level page table locks that really protect PTEs.
> > > 
> > >  With that locking gone, there would be nothing protection vma->anon_vma.
> > > 
> > >  Note that anon_vma_clone() is likely called with the mmap_lock held in write mode, which is not the case for __anon_vma_prepare() ...
> > > 
> > 
> >  Yes, anon_vma_clone() is called with the mmap_lock held. I added mmap_assert_write_locked(dst->vm_mm) to prove it.
> > 
> >  I added mmap_assert_write_locked(vma->vm_mm) in __anon_vma_prepare() at the same time, it shows __anon_vma_prepare()
> > 
> >  is also called with the mmap_lock held too.
> > 
> 
> Make sure you actually have lockdep built in and enabled.
> 

This is my config.
CONFIG_LOCKDEP=n
CONFIG_DEBUG_VM=y

I did another test.
I put mmap_assert_write_locked(mm) before 'set_bit(MMF_OOM_SKIP, &mm->flags)' in mmap.c, it's outside the lock.
It will crash when on boot. I think mmap_assert_write_locked() works.


> __anon_vma_prepare() is for example called from do_anonymous_page() where we might only hold the mmap_lock in read mode (or not at all IIRC with VMA in read mode).
> 
> -- Cheers,
> 
> David / dhildenb
>


  reply	other threads:[~2024-04-23  8:35 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-22 10:52 [PATCH] mm/rmap: remove unnecessary page_table_lock Yajun Deng
2024-04-22 11:24 ` David Hildenbrand
2024-04-23  7:53   ` Yajun Deng
2024-04-23  8:18     ` David Hildenbrand
2024-04-23  8:35       ` Yajun Deng [this message]
2024-04-23 17:11         ` Liam R. Howlett
2024-04-24  3:04           ` Yajun Deng
2024-04-22 11:24 ` Qi Zheng

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=b6ea1fb5bc6c06d2855e41b4034656b0a76b58f5@linux.dev \
    --to=yajun.deng@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.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.