lkml.org 
[lkml]   [2012]   [Sep]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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>



    \
     
     \ /
      Last update: 2012-09-20 16:41    [W:0.024 / U:30.352 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site