All of lore.kernel.org
 help / color / mirror / Atom feed
From: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>,
	Peter Zijlstra <peterz@infradead.org>,
	Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
	Anton Arapov <anton@redhat.com>, Hugh Dickins <hughd@google.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 2/5] uprobes: __replace_page() should not use page_address_in_vma()
Date: Mon, 9 Jul 2012 15:58:37 +0530	[thread overview]
Message-ID: <20120709102837.GC32393@linux.vnet.ibm.com> (raw)
In-Reply-To: <20120706161857.GA9218@redhat.com>

> ------------------------------------------------------------------------------
> Subject: [PATCH v2 2/5] uprobes: __replace_page() should not use page_address_in_vma()
> 
> page_address_in_vma(old_page) in __replace_page() is ugly and wrong.
> The caller already knows the correct virtual address, this page was
> found by get_user_pages(vaddr).
> 
> However, page_address_in_vma() can actually fail if page->mapping was
> cleared by __delete_from_page_cache() after get_user_pages() returns.
> But this means the race with page reclaim, write_opcode() should not
> fail, it should retry and read this page again. Probably the race with
> remove_mapping() is not possible due to page_freeze_refs() logic, but
> afaics at least shmem_writepage()->shmem_delete_from_page_cache() can
> clear ->mapping.
> 
> We could change __replace_page() to return -EAGAIN in this case, but
> it would be better to simply use the caller's vaddr and rely on
> page_check_address().
> 
> Signed-off-by: Oleg Nesterov <oleg@redhat.com>

Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>


  reply	other threads:[~2012-07-09 10:29 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-24 14:59 [PATCH v2 0/5] uprobes: write_opcode() cleanups Oleg Nesterov
2012-06-24 15:00 ` [PATCH v2 1/5] uprobes: don't recheck vma/f_mapping in write_opcode() Oleg Nesterov
2012-07-09 10:30   ` Srikar Dronamraju
2012-06-24 15:00 ` [PATCH v2 2/5] uprobes: __replace_page() should not use page_address_in_vma() Oleg Nesterov
2012-07-06 16:18   ` Oleg Nesterov
2012-07-09 10:28     ` Srikar Dronamraju [this message]
2012-06-24 15:00 ` [PATCH v2 3/5] uprobes: kill write_opcode()->lock_page(new_page) Oleg Nesterov
2012-07-09 10:29   ` Srikar Dronamraju
2012-06-24 15:00 ` [PATCH v2 4/5] uprobes: cleanup and document write_opcode()->lock_page(old_page) Oleg Nesterov
2012-07-09 10:29   ` Srikar Dronamraju
2012-06-24 15:01 ` [PATCH v2 5/5] uprobes: __replace_page() needs munlock_vma_page() Oleg Nesterov
2012-06-26 11:55   ` Anton Arapov
2012-06-26 15:47     ` Oleg Nesterov
2012-07-06 10:54 ` [PATCH v2 0/5] uprobes: write_opcode() cleanups Ingo Molnar
2012-07-06 16:07   ` Oleg Nesterov
2012-07-06 16:13     ` Oleg Nesterov
2012-07-09  9:12       ` Ingo Molnar
2012-07-09 13:30         ` Oleg Nesterov
2012-07-09 10:27     ` Srikar Dronamraju

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=20120709102837.GC32393@linux.vnet.ibm.com \
    --to=srikar@linux.vnet.ibm.com \
    --cc=ananth@in.ibm.com \
    --cc=anton@redhat.com \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=oleg@redhat.com \
    --cc=peterz@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.