From: Andrea Arcangeli <aarcange@redhat.com>
To: Robin Holt <holt@sgi.com>
Cc: Christoph Hellwig <hch@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
Jack Steiner <steiner@sgi.com>,
linux-mm@kvack.org
Subject: Re: [RFP-V2 0/3] Make mmu_notifier_invalidate_range_start able to sleep.
Date: Tue, 2 Feb 2010 17:52:24 +0100 [thread overview]
Message-ID: <20100202165224.GP4135@random.random> (raw)
In-Reply-To: <20100202163930.GR6653@sgi.com>
On Tue, Feb 02, 2010 at 10:39:30AM -0600, Robin Holt wrote:
> On Tue, Feb 02, 2010 at 05:01:46PM +0100, Andrea Arcangeli wrote:
> > On Tue, Feb 02, 2010 at 09:21:42AM -0600, Robin Holt wrote:
> > > unmap_mapping_range_vma would then unlock the i_mmap_lock, call
> > > _inv_range_start(atomic==0) which would clear all the remote page tables
> > > and TLBs. It would then reaquire the i_mmap_lock and retry.
> >
> > I guess you missed why we hold the i_mmap_lock there... it's not like
> > gratuitous locking complication there's an actual reason why it's
> > taken, and it's to avoid the vma to be freed from under you:
>
> Oversight on my part. Sorry.
>
> Will this work?
No, it still corrupts memory as before. You need to re-run find_vma
under mmap_sem. Then it could work...
Also it's wrong to pin mm_users, you only need mm_count here, as you
only need to run find_vma, you don't need to prevent exit to free the
pages indefinitely while you're blocked.
> static int unmap_mapping_range_vma(struct vm_area_struct *vma,
> ...
> if (need_unlocked_invalidate) {
> mm = vma->vm_mm;
> atomic_inc(&mm->mm_users);
> }
> spin_unlock(details->i_mmap_lock);
> if (need_unlocked_invalidate) {
> /*
> * zap_page_range failed to make any progress because the
> * mmu_notifier_invalidate_range_start was called atomically
> * while the callee needed to sleep. In that event, we
> * make the callout while the i_mmap_lock is released.
> */
> mmu_notifier_invalidate_range_start(mm, start_addr, end_addr, 0);
> mmu_notifier_invalidate_range_end(mm, start_addr, end_addr);
> mmput(mm);
> }
> cond_resched();
> spin_lock(details->i_mmap_lock);
> return -EINTR;
>
> Robin
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-02-02 16:52 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20100202040145.555474000@alcatraz.americas.sgi.com>
2010-02-02 4:01 ` [RFP-V2 1/3] Have mmu_notifiers use SRCU so they may safely schedule Robin Holt
2010-02-02 4:01 ` [RFP-V2 2/3] Fix unmap_vma() bug related to mmu_notifiers Robin Holt
2010-02-02 4:01 ` [RFP-V2 3/3] Make mmu_notifier_invalidate_range_start able to sleep Robin Holt
2010-02-02 8:09 ` [RFP-V2 0/3] " Christoph Hellwig
2010-02-02 12:59 ` Andrea Arcangeli
2010-02-02 13:13 ` Andrea Arcangeli
2010-02-02 13:29 ` Robin Holt
2010-02-02 13:40 ` Andrea Arcangeli
2010-02-02 13:51 ` Robin Holt
2010-02-02 14:10 ` Andrea Arcangeli
2010-02-02 14:21 ` Robin Holt
2010-02-02 14:59 ` Andrea Arcangeli
2010-02-02 15:21 ` Robin Holt
2010-02-02 16:01 ` Andrea Arcangeli
2010-02-02 16:39 ` Robin Holt
2010-02-02 16:52 ` Andrea Arcangeli [this message]
2010-02-02 16:59 ` Robin Holt
2010-02-02 17:31 ` Robin Holt
2010-02-02 20:27 ` Andrea Arcangeli
2010-02-02 20:17 ` Andrea Arcangeli
2010-02-03 0:48 ` Robin Holt
2010-02-03 17:14 ` Andrea Arcangeli
2010-02-03 17:18 ` Andrea Arcangeli
2010-02-03 19:54 ` Robin Holt
2010-02-02 13:23 ` Robin Holt
2010-02-02 13:35 ` Robin Holt
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=20100202165224.GP4135@random.random \
--to=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=hch@infradead.org \
--cc=holt@sgi.com \
--cc=linux-mm@kvack.org \
--cc=steiner@sgi.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 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.