lkml.org 
[lkml]   [2008]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH -mm] kprobes: kprobe-booster for ia64
    Hello Shaohua,

    Thank you for reviewing!

    Shaohua Li wrote:
    > On Sat, 2008-03-08 at 00:01 +0800, Masami Hiramatsu wrote:
    >> From: Masami Hiramatsu <mhiramat@redhat.com>
    >> +
    >> +/* Prepare long jump bundle and disables other boosters if need */
    >> +static void __kprobes prepare_booster(struct kprobe *p)
    >> +{
    >> + unsigned long addr = (unsigned long)p->addr & ~0xFULL;
    >> + unsigned int slot = addr & 0xf;
    > slot = (unsigned long)p->addr & 0xf ?

    You are correct. I'll fix that.

    >
    >> + struct kprobe *other_kp;
    >> +
    >> + if (can_boost(&p->ainsn.insn[0].bundle, slot, addr)) {
    >> + set_brl_inst(&p->ainsn.insn[1].bundle, (bundle_t
    >> *)addr + 1);
    >> + p->ainsn.inst_flag |= INST_FLAG_BOOSTABLE;
    >> + }
    >> +
    >> + /* disables boosters in previous slots */
    >> + for (; addr < (unsigned long)p->addr; addr++) {
    >> + other_kp = get_kprobe((void *)addr);
    >> + if (other_kp)
    >> + other_kp->ainsn.inst_flag &=
    >> ~INST_FLAG_BOOSTABLE;
    >> + }
    >> +}
    >> +
    > There is no lock to protect the flag. If one cpu invokes other_kp and
    > the other cpu is changing the flag, what's the result?

    I think that other cpu never change the flag, because the caller of this
    function(__register_kprobe) locks kprobe_mutex in kernel/kprobes.c.

    > Thanks,
    > Shaohua

    Thanks,

    --
    Masami Hiramatsu

    Software Engineer
    Hitachi Computer Products (America) Inc.
    Software Solutions Division

    e-mail: mhiramat@redhat.com



    \
     
     \ /
      Last update: 2008-03-10 19:31    [W:0.026 / U:1.268 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site