From: Shaohua Li <shaohua.li@intel.com>
To: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
ia64 <linux-ia64@vger.kernel.org>,
"Luck, Tony" <tony.luck@intel.com>,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
Jim Keniston <jkenisto@us.ibm.com>,
systemtap-ml <systemtap@sources.redhat.com>
Subject: Re: [PATCH -mm] kprobes: kprobe-booster for ia64
Date: Tue, 11 Mar 2008 09:20:17 +0800 [thread overview]
Message-ID: <1205198417.24178.10.camel@sli10-desk.sh.intel.com> (raw)
In-Reply-To: <47D57D28.7070100@redhat.com>
Hi,
On Tue, 2008-03-11 at 02:25 +0800, Masami Hiramatsu wrote:
> 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.
I mean if one cpu is doing register_kprobe, which will change other_kp's
flag. Another cpu is running into other_kp's break point, which will
look at the flag, there is a window (between the second cpu looks at the
flag and doing boost) the first cpu can change the flag in the window.
It appears we will lose one probe, but not sure if this is over
thinking.
Thanks,
Shaohua
next prev parent reply other threads:[~2008-03-11 1:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-07 16:01 Masami Hiramatsu
2008-03-10 3:43 ` Shaohua Li
2008-03-10 18:25 ` Masami Hiramatsu
2008-03-11 0:06 ` [PATCH -mm] kprobes: fix prepare_booster to get correct slot Masami Hiramatsu
2008-03-11 1:20 ` Shaohua Li [this message]
2008-03-11 18:17 ` [PATCH -mm] kprobes: kprobe-booster for ia64 Masami Hiramatsu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1205198417.24178.10.camel@sli10-desk.sh.intel.com \
--to=shaohua.li@intel.com \
--cc=akpm@linux-foundation.org \
--cc=ananth@in.ibm.com \
--cc=jkenisto@us.ibm.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@redhat.com \
--cc=systemtap@sources.redhat.com \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®