From d7db15e7b5ddb5bb341a257b88eb234e65bcaad0 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Sun, 28 Oct 2012 16:55:36 +0100 Subject: [PATCH] --- yaml --- r: 339045 b: refs/heads/master c: 65b2c8f0e53347583168423de0f32227d8baf01b h: refs/heads/master i: 339043: 2bb8fa74797712561405db9d39fba7fd8e3a9fd6 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/uprobes.c | 6 ++++++ trunk/kernel/events/uprobes.c | 2 -- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 093a820f0eff..31b5a009dcbc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f57d56dd29003435d1bfc0e675896c368180f8ec +refs/heads/master: 65b2c8f0e53347583168423de0f32227d8baf01b diff --git a/trunk/arch/powerpc/kernel/uprobes.c b/trunk/arch/powerpc/kernel/uprobes.c index d2d46d1014f8..bc77834dbf43 100644 --- a/trunk/arch/powerpc/kernel/uprobes.c +++ b/trunk/arch/powerpc/kernel/uprobes.c @@ -64,6 +64,8 @@ int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs) autask->saved_trap_nr = current->thread.trap_nr; current->thread.trap_nr = UPROBE_TRAP_NR; regs->nip = current->utask->xol_vaddr; + + user_enable_single_step(current); return 0; } @@ -119,6 +121,8 @@ int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs) * to be executed. */ regs->nip = utask->vaddr + MAX_UINSN_BYTES; + + user_disable_single_step(current); return 0; } @@ -162,6 +166,8 @@ void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs) current->thread.trap_nr = utask->autask.saved_trap_nr; instruction_pointer_set(regs, utask->vaddr); + + user_disable_single_step(current); } /* diff --git a/trunk/kernel/events/uprobes.c b/trunk/kernel/events/uprobes.c index 5cc4e7e42e68..abbfd8440a6d 100644 --- a/trunk/kernel/events/uprobes.c +++ b/trunk/kernel/events/uprobes.c @@ -1432,12 +1432,10 @@ static struct uprobe *find_active_uprobe(unsigned long bp_vaddr, int *is_swbp) void __weak arch_uprobe_enable_step(struct arch_uprobe *arch) { - user_enable_single_step(current); } void __weak arch_uprobe_disable_step(struct arch_uprobe *arch) { - user_disable_single_step(current); } /*