From: Masami Hiramatsu <mhiramat@kernel.org>
To: "liuqi (BA)" <liuqi115@huawei.com>
Cc: Mark Rutland <mark.rutland@arm.com>, <catalin.marinas@arm.com>,
<will@kernel.org>, <naveen.n.rao@linux.ibm.com>,
<anil.s.keshavamurthy@intel.com>, <davem@davemloft.net>,
<linux-arm-kernel@lists.infradead.org>,
<song.bao.hua@hisilicon.com>, <prime.zeng@hisilicon.com>,
<robin.murphy@arm.com>, <f.fangjian@huawei.com>,
<linuxarm@huawei.com>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 2/2] arm64: kprobe: Enable OPTPROBE for arm64
Date: Sat, 27 Nov 2021 21:23:02 +0900 [thread overview]
Message-ID: <20211127212302.f71345c34e5a62e5e779adb2@kernel.org> (raw)
In-Reply-To: <aebcfbcb-eded-ff48-9d1f-2a93539575ca@huawei.com>
On Fri, 26 Nov 2021 18:31:06 +0800
"liuqi (BA)" <liuqi115@huawei.com> wrote:
>
>
> On 2021/8/24 18:50, Mark Rutland wrote:
> >> diff --git a/arch/arm64/kernel/probes/optprobe_trampoline.S b/arch/arm64/kernel/probes/optprobe_trampoline.S
> >> new file mode 100644
> >> index 000000000000..24d713d400cd
> >> --- /dev/null
> >> +++ b/arch/arm64/kernel/probes/optprobe_trampoline.S
> >> @@ -0,0 +1,37 @@
> >> +/* SPDX-License-Identifier: GPL-2.0 */
> >> +/*
> >> + * trampoline entry and return code for optprobes.
> >> + */
> >> +
> >> +#include <linux/linkage.h>
> >> +#include <asm/asm-offsets.h>
> >> +#include <asm/assembler.h>
> >> +
> >> + .global optprobe_template_entry
> >> +optprobe_template_entry:
> > Please use SYM_*(); see arch/arm64/kernel/entry-ftrace.S for examples of
> > how to use that for trampolines.
> >
> > This should be:
> >
> > SYM_CODE_START(optprobe_template)
> >
> Hi all,
>
> I meet a problem when I use SYM_CODE_START(optprobe_template) to replace
> optprobe_template_entry.
>
> If SYM_CODE_START is used, all optprobe will share one trampoline space.
> Under this circumstances, if user register two optprobes, trampoline
> will be overwritten by the newer one, and this will cause kernel panic
> when the old optprobe is trigger.
Hm, this is curious, because the template should be copied to the
trampoline buffer for each optprobe and be modified.
>
> Using optprobe_template_entry will not have this problem, as each
> optprobe has its own trampoline space (alloced in get_opinsn_slot()).
Yes, it is designed to do so.
Thank you,
>
> So how to reuse SYM_CODE_START in this situation, does anyone has a
> good idea?
>
> Thanks,
> Qi
> > ... and note the matching end below.
> >
> >> + sub sp, sp, #PT_REGS_SIZE
> >> + save_all_base_regs
> >> + /* Get parameters to optimized_callback() */
> >> + ldr x0, 1f
> >> + mov x1, sp
> >> + /* Branch to optimized_callback() */
> >> + .global optprobe_template_call
> >> +optprobe_template_call:
> > SYM_INNER_LABEL(optprobe_template_call, SYM_L_GLOBAL)
> >
> > ...and likewise for all the other labels.
> >
> >> + nop
> >> + restore_all_base_regs
> >> + ldr lr, [sp, #S_LR]
> >> + add sp, sp, #PT_REGS_SIZE
> >> + .global optprobe_template_restore_orig_insn
> >> +optprobe_template_restore_orig_insn:
> >> + nop
> >> + .global optprobe_template_restore_end
> >> +optprobe_template_restore_end:
> >> + nop
> >> + .global optprobe_template_end
> >> +optprobe_template_end:
> >> + .global optprobe_template_val
> >> +optprobe_template_val:
> >> + 1: .long 0
> >> + .long 0
> >> + .global optprobe_template_max_length
> >> +optprobe_template_max_length:
> > SYM_INNER_LABEL(optprobe_template_end, SYM_L_GLOBAL)
> > SYM_CODE_END(optprobe_template)
> >
> > Thanks,
> > Mark.
> >
> >> --
--
Masami Hiramatsu <mhiramat@kernel.org>
next prev parent reply other threads:[~2021-11-27 12:25 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-18 7:33 [PATCH v4 0/2] arm64: Enable OPTPROBE for arm64 Qi Liu
2021-08-18 7:33 ` [PATCH v4 1/2] Make save_all_base_regs and restore_all_base_regs as common macro Qi Liu
2021-08-18 7:33 ` [PATCH v4 2/2] arm64: kprobe: Enable OPTPROBE for arm64 Qi Liu
2021-08-18 16:27 ` Masami Hiramatsu
2021-08-24 10:50 ` Mark Rutland
2021-08-24 11:50 ` Barry Song
2021-08-24 12:11 ` Mark Rutland
2021-08-24 12:42 ` Barry Song
2021-08-25 2:13 ` Masami Hiramatsu
2021-08-25 3:12 ` Barry Song
2021-09-07 3:14 ` liuqi (BA)
2021-11-26 10:31 ` liuqi (BA)
2021-11-27 12:23 ` Masami Hiramatsu [this message]
2021-11-29 1:40 ` liuqi (BA)
2021-11-29 5:00 ` Masami Hiramatsu
2021-11-29 6:50 ` liuqi (BA)
2021-11-29 14:35 ` Masami Hiramatsu
2021-11-30 6:48 ` liuqi (BA)
2021-12-01 1:50 ` Masami Hiramatsu
2021-12-01 2:55 ` liuqi (BA)
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=20211127212302.f71345c34e5a62e5e779adb2@kernel.org \
--to=mhiramat@kernel.org \
--cc=anil.s.keshavamurthy@intel.com \
--cc=catalin.marinas@arm.com \
--cc=davem@davemloft.net \
--cc=f.fangjian@huawei.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=liuqi115@huawei.com \
--cc=mark.rutland@arm.com \
--cc=naveen.n.rao@linux.ibm.com \
--cc=prime.zeng@hisilicon.com \
--cc=robin.murphy@arm.com \
--cc=song.bao.hua@hisilicon.com \
--cc=will@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).