From: Jason Gunthorpe <jgg@ziepe.ca>
To: Suren Baghdasaryan <surenb@google.com>
Cc: akpm@linux-foundation.org, mhocko@kernel.org, mhocko@suse.com,
rientjes@google.com, willy@infradead.org, hannes@cmpxchg.org,
guro@fb.com, riel@surriel.com, minchan@kernel.org,
kirill@shutemov.name, aarcange@redhat.com, christian@brauner.io,
hch@infradead.org, oleg@redhat.com, david@redhat.com,
jannh@google.com, shakeelb@google.com, luto@kernel.org,
christian.brauner@ubuntu.com, fweimer@redhat.com,
jengelh@inai.de, timmurray@google.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, kernel-team@android.com
Subject: Re: [PATCH v5 3/3] mm/oom_kill: allow process_mrelease to run under mmap_lock protection
Date: Thu, 9 Dec 2021 16:48:16 -0400 [thread overview]
Message-ID: <20211209204816.GF6467@ziepe.ca> (raw)
In-Reply-To: <20211209191325.3069345-3-surenb@google.com>
On Thu, Dec 09, 2021 at 11:13:25AM -0800, Suren Baghdasaryan wrote:
> With exit_mmap holding mmap_write_lock during free_pgtables call,
> process_mrelease does not need to elevate mm->mm_users in order to
> prevent exit_mmap from destrying pagetables while __oom_reap_task_mm
> is walking the VMA tree. The change prevents process_mrelease from
> calling the last mmput, which can lead to waiting for IO completion
> in exit_aio.
>
> Signed-off-by: Suren Baghdasaryan <surenb@google.com>
> Acked-by: Michal Hocko <mhocko@suse.com>
> ---
> changes in v5
> - Removed Fixes: tag, per Michal Hocko
> - Added Acked-by's
>
> mm/oom_kill.c | 27 +++++++++++++++------------
> 1 file changed, 15 insertions(+), 12 deletions(-)
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
There are mmget_not_zero's all over the place, can others be cleaned
after this series goes ahead too?
It seems like anything doing the mmget just to look at the vma list
under the mmap lock is now fine with only a mmgrab?
A few I know about:
drivers/infiniband/core/umem_odp.c: if (!mmget_not_zero(umem->owning_mm)) {
This is because mmu_interval_notifier_insert() might call
mm_take_all_locks() which was unsafe with concurrent exit_mmap
drivers/infiniband/core/umem_odp.c: if (!owning_process || !mmget_not_zero(owning_mm)) {
This is because it calls hmm_range_fault() which iterates over the vma
list which is safe now
drivers/iommu/iommu-sva-lib.c: return mmget_not_zero(mm);
drivers/iommu/iommu-sva-lib.c: return ioasid_find(&iommu_sva_pasid, pasid, __mmget_not_zero);
It calls find_extend_vma() - but also it doesn't seem to have a mmgrab when it
does that mmget. The rcu is messed up here too, so humm.
Jason
next prev parent reply other threads:[~2021-12-09 20:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-09 19:13 [PATCH v5 1/3] mm: protect free_pgtables with mmap_lock write lock in exit_mmap Suren Baghdasaryan
2021-12-09 19:13 ` [PATCH v5 2/3] mm: document locking restrictions for vm_operations_struct::close Suren Baghdasaryan
2021-12-09 19:13 ` [PATCH v5 3/3] mm/oom_kill: allow process_mrelease to run under mmap_lock protection Suren Baghdasaryan
2021-12-09 20:48 ` Jason Gunthorpe [this message]
2021-12-10 15:54 ` Suren Baghdasaryan
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=20211209204816.GF6467@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=christian.brauner@ubuntu.com \
--cc=christian@brauner.io \
--cc=david@redhat.com \
--cc=fweimer@redhat.com \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=hch@infradead.org \
--cc=jannh@google.com \
--cc=jengelh@inai.de \
--cc=kernel-team@android.com \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luto@kernel.org \
--cc=mhocko@kernel.org \
--cc=mhocko@suse.com \
--cc=minchan@kernel.org \
--cc=oleg@redhat.com \
--cc=riel@surriel.com \
--cc=rientjes@google.com \
--cc=shakeelb@google.com \
--cc=surenb@google.com \
--cc=timmurray@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox