Messages in this thread | | | Date | Thu, 20 Sep 2012 19:25:25 +0530 | From | Srikar Dronamraju <> | Subject | Re: [PATCH 2/5] uprobes: Do not setup ->active_uprobe/state prematurely |
| |
* Oleg Nesterov <oleg@redhat.com> [2012-09-14 19:15:54]:
> handle_swbp() sets utask->active_uprobe before handler_chain(), > and UTASK_SSTEP before pre_ssout(). This complicates the code > for no reason, arch_ hooks or consumer->handler() should not > (and can't) use this info. > > Change handle_swbp() to initialize them after pre_ssout(), and > remove the no longer needed cleanup-utask code. > > Signed-off-by: Oleg Nesterov <oleg@redhat.com> > --- > kernel/events/uprobes.c | 9 +++------ > 1 files changed, 3 insertions(+), 6 deletions(-) > > diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c > index 760acc1..9893cba 100644 > --- a/kernel/events/uprobes.c > +++ b/kernel/events/uprobes.c > @@ -1496,22 +1496,19 @@ static void handle_swbp(struct pt_regs *regs) > if (!utask) > goto cleanup_ret; > } > - utask->active_uprobe = uprobe; > + > handler_chain(uprobe, regs); > if (uprobe->flags & UPROBE_SKIP_SSTEP && can_skip_sstep(uprobe, regs)) > goto cleanup_ret; > > - utask->state = UTASK_SSTEP; > if (!pre_ssout(uprobe, regs, bp_vaddr)) { > arch_uprobe_enable_step(&uprobe->arch); > + utask->active_uprobe = uprobe; > + utask->state = UTASK_SSTEP; > return; > } > > cleanup_ret: > - if (utask) { > - utask->active_uprobe = NULL; > - utask->state = UTASK_RUNNING; > - } > if (!(uprobe->flags & UPROBE_SKIP_SSTEP)) > > /*
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
| |