Messages in this thread Patch in this message | | | Date | Wed, 6 Jun 2012 08:09:11 -0700 | From | tip-bot for Oleg Nesterov <> | Subject | [tip:perf/core] uprobes: Change read_opcode() to use FOLL_FORCE |
| |
Commit-ID: 2c357a15491100e94de8e6105e6046ee3a71e05a Gitweb: http://git.kernel.org/tip/2c357a15491100e94de8e6105e6046ee3a71e05a Author: Oleg Nesterov <oleg@redhat.com> AuthorDate: Tue, 29 May 2012 21:27:59 +0200 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Wed, 6 Jun 2012 11:30:55 +0200
uprobes: Change read_opcode() to use FOLL_FORCE
set_orig_insn()->read_opcode() should not fail if the probed task did mprotect() after uprobe_register(), change it to use FOLL_FORCE. Without FOLL_WRITE this doesn't have any "side" effect but allows to read the !VM_READ memory.
There is another reason for this change, we are going to use is_swbp_at_addr() from handle_swbp() which can race with another thread doing mprotect().
Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Cc: Anton Arapov <anton@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20120529192759.GB8057@redhat.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- kernel/events/uprobes.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index d0f5ec0..a0dbc87 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c @@ -312,7 +312,7 @@ static int read_opcode(struct mm_struct *mm, unsigned long vaddr, uprobe_opcode_ void *vaddr_new; int ret; - ret = get_user_pages(NULL, mm, vaddr, 1, 0, 0, &page, NULL); + ret = get_user_pages(NULL, mm, vaddr, 1, 0, 1, &page, NULL); if (ret <= 0) return ret;
| |