From: ananth@in.ibm.com (Ananth N Mavinakayanahalli)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 0/6] arm64: Add kernel probes (kprobes) support
Date: Thu, 14 May 2015 09:18:35 +0530 [thread overview]
Message-ID: <20150514034835.GB29151@in.ibm.com> (raw)
In-Reply-To: <5553E5BF.2020602@hitachi.com>
On Thu, May 14, 2015 at 09:01:03AM +0900, Masami Hiramatsu wrote:
> On 2015/05/14 0:41, William Cohen wrote:
> > On 05/13/2015 05:22 AM, Masami Hiramatsu wrote:
> >> On 2015/05/12 21:48, William Cohen wrote:
> >
> >>> Hi Dave,
> >>>
> >>> In some of the previous diagnostic output it looked like things would go wrong
> >>> in the entry.S when the D bit was cleared and the debug interrupts were
> >>> unmasksed. I wonder if some of the issue might be due to the starting the
> >>> kprobe for the trampoline, but leaving things in an odd state when another
> >>> set of krpobe/kretporbes are hit when the trampoline is running.
> >>
> >> Hmm, does this mean we have a trouble if a user kprobe handler calls the
> >> function which is probed by other kprobe? Or, is this just a problem
> >> only for kretprobes?
> >
> > Hi Masami,
> >
> > I wrote an example based off of sample/kprobes/kprobes_sample.c to force
> > the reentry issue for kprobes (the attached kprobe_rentry_example.c). That
> > seemed to run fine. I think the reason that the trampoline handler got
> > into trouble is because of the reset_current_kprobe() before the possible
> > call to kfree, but I haven't verified it.
>
> I still doubt about kfree() reentrant call, since kretprobe handler only
> calls recycle_rp_inst() which doesn't free the instance but just push it back
> to the unused instance list.
>
> > It seems like that should be at the end of trampoline handler just before
> > the return. Other architectures have similar trampoline handlers,
> > so I am surprised that the other architectures haven't encountered this
> > issue with kretprobes. Maybe this is due to specific of arm64 exception
> > handling.
>
> Ah, indeed the reset_current_kprobe() here seems not good since some
> interruption or some other reason, another kprobes can be hit before
> returning.
>
> If kprobes can handle reentered probes correctly, I think your patch
> (directly branch from trampoline) looks good to fix this problem.
> Actually, arm32 and x86 already has same method.
>
> It seems that powerpc will have similar issue, does someone checked
> that? Ananth?
Yes, there is a window where this can happen on powerpc. I haven't
however been able to trigger it thus far -- will try with a different
sample and test.
Thanks for the heads-up.
Ananth
WARNING: multiple messages have this Message-ID (diff)
From: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: William Cohen <wcohen@redhat.com>,
David Long <dave.long@linaro.org>,
Will Deacon <will.deacon@arm.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Russell King <linux@arm.linux.org.uk>,
"sandeepa.s.prabhu@gmail.com" <sandeepa.s.prabhu@gmail.com>,
Steve Capper <steve.capper@linaro.org>,
Catalin Marinas <Catalin.Marinas@arm.com>,
"Jon Medhurst (Tixy)" <tixy@linaro.org>,
Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>,
"davem@davemloft.net" <davem@davemloft.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: Re: [PATCH v6 0/6] arm64: Add kernel probes (kprobes) support
Date: Thu, 14 May 2015 09:18:35 +0530 [thread overview]
Message-ID: <20150514034835.GB29151@in.ibm.com> (raw)
In-Reply-To: <5553E5BF.2020602@hitachi.com>
On Thu, May 14, 2015 at 09:01:03AM +0900, Masami Hiramatsu wrote:
> On 2015/05/14 0:41, William Cohen wrote:
> > On 05/13/2015 05:22 AM, Masami Hiramatsu wrote:
> >> On 2015/05/12 21:48, William Cohen wrote:
> >
> >>> Hi Dave,
> >>>
> >>> In some of the previous diagnostic output it looked like things would go wrong
> >>> in the entry.S when the D bit was cleared and the debug interrupts were
> >>> unmasksed. I wonder if some of the issue might be due to the starting the
> >>> kprobe for the trampoline, but leaving things in an odd state when another
> >>> set of krpobe/kretporbes are hit when the trampoline is running.
> >>
> >> Hmm, does this mean we have a trouble if a user kprobe handler calls the
> >> function which is probed by other kprobe? Or, is this just a problem
> >> only for kretprobes?
> >
> > Hi Masami,
> >
> > I wrote an example based off of sample/kprobes/kprobes_sample.c to force
> > the reentry issue for kprobes (the attached kprobe_rentry_example.c). That
> > seemed to run fine. I think the reason that the trampoline handler got
> > into trouble is because of the reset_current_kprobe() before the possible
> > call to kfree, but I haven't verified it.
>
> I still doubt about kfree() reentrant call, since kretprobe handler only
> calls recycle_rp_inst() which doesn't free the instance but just push it back
> to the unused instance list.
>
> > It seems like that should be at the end of trampoline handler just before
> > the return. Other architectures have similar trampoline handlers,
> > so I am surprised that the other architectures haven't encountered this
> > issue with kretprobes. Maybe this is due to specific of arm64 exception
> > handling.
>
> Ah, indeed the reset_current_kprobe() here seems not good since some
> interruption or some other reason, another kprobes can be hit before
> returning.
>
> If kprobes can handle reentered probes correctly, I think your patch
> (directly branch from trampoline) looks good to fix this problem.
> Actually, arm32 and x86 already has same method.
>
> It seems that powerpc will have similar issue, does someone checked
> that? Ananth?
Yes, there is a window where this can happen on powerpc. I haven't
however been able to trigger it thus far -- will try with a different
sample and test.
Thanks for the heads-up.
Ananth
next prev parent reply other threads:[~2015-05-14 3:48 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-20 20:19 [PATCH v6 0/6] arm64: Add kernel probes (kprobes) support David Long
2015-04-20 20:19 ` David Long
2015-04-20 20:19 ` [PATCH v6 1/6] arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature David Long
2015-04-20 20:19 ` David Long
2015-05-20 13:39 ` Catalin Marinas
2015-05-20 13:39 ` Catalin Marinas
2015-05-21 3:29 ` David Long
2015-05-21 3:29 ` David Long
2015-05-21 17:55 ` Catalin Marinas
2015-05-21 17:55 ` Catalin Marinas
2015-05-22 17:05 ` David Long
2015-05-22 17:05 ` David Long
2015-04-20 20:19 ` [PATCH v6 2/6] arm64: Add more test functions to insn.c David Long
2015-04-20 20:19 ` David Long
2015-04-20 20:19 ` [PATCH v6 3/6] arm64: Kprobes with single stepping support David Long
2015-04-20 20:19 ` David Long
2015-05-20 16:39 ` Catalin Marinas
2015-05-20 16:39 ` Catalin Marinas
2015-05-21 4:44 ` David Long
2015-05-21 4:44 ` David Long
2015-05-22 11:00 ` Catalin Marinas
2015-05-22 11:00 ` Catalin Marinas
2015-05-22 15:49 ` William Cohen
2015-05-22 15:49 ` William Cohen
2015-05-22 16:54 ` Catalin Marinas
2015-05-22 16:54 ` Catalin Marinas
2015-05-22 16:57 ` David Long
2015-05-22 16:57 ` David Long
2015-04-20 20:19 ` [PATCH v6 4/6] arm64: kprobes instruction simulation support David Long
2015-04-20 20:19 ` David Long
2015-04-20 20:19 ` [PATCH v6 5/6] arm64: Add kernel return probes support (kretprobes) David Long
2015-04-20 20:19 ` David Long
2015-04-20 20:19 ` [PATCH v6 6/6] kprobes: Add arm64 case in kprobe example module David Long
2015-04-20 20:19 ` David Long
2015-04-21 11:42 ` [PATCH v6 0/6] arm64: Add kernel probes (kprobes) support Masami Hiramatsu
2015-04-21 11:42 ` Masami Hiramatsu
2015-04-21 14:07 ` William Cohen
2015-04-21 14:07 ` William Cohen
2015-04-24 21:14 ` William Cohen
2015-04-24 21:14 ` William Cohen
2015-04-28 2:58 ` William Cohen
2015-04-28 2:58 ` William Cohen
2015-04-29 10:23 ` Will Deacon
2015-04-29 10:23 ` Will Deacon
2015-05-02 1:44 ` William Cohen
2015-05-02 1:44 ` William Cohen
2015-05-05 5:14 ` David Long
2015-05-05 5:14 ` David Long
2015-05-05 15:48 ` Will Deacon
2015-05-05 15:48 ` Will Deacon
2015-05-05 16:18 ` William Cohen
2015-05-05 16:18 ` William Cohen
2015-05-05 21:02 ` William Cohen
2015-05-05 21:02 ` William Cohen
2015-05-06 3:14 ` William Cohen
2015-05-06 3:14 ` William Cohen
2015-05-12 5:54 ` David Long
2015-05-12 5:54 ` David Long
2015-05-12 12:48 ` William Cohen
2015-05-12 12:48 ` William Cohen
2015-05-13 9:22 ` Masami Hiramatsu
2015-05-13 9:22 ` Masami Hiramatsu
2015-05-13 15:41 ` William Cohen
2015-05-13 15:41 ` William Cohen
2015-05-13 19:58 ` David Long
2015-05-13 19:58 ` David Long
2015-05-13 20:35 ` William Cohen
2015-05-13 20:35 ` William Cohen
2015-05-14 0:01 ` Masami Hiramatsu
2015-05-14 0:01 ` Masami Hiramatsu
2015-05-14 3:48 ` Ananth N Mavinakayanahalli [this message]
2015-05-14 3:48 ` Ananth N Mavinakayanahalli
2015-04-29 4:33 ` David Long
2015-04-29 4:33 ` David Long
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=20150514034835.GB29151@in.ibm.com \
--to=ananth@in.ibm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.