Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1420491
| From | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v13 05/10] arm64: Kprobes with single stepping support |
| Date | 2016-06-13 09:00 +0200 |
| Message-ID | <rJu0N-2EM-1@gated-at.bofh.it> (permalink) |
| References | <rFNY5-6k1-1@gated-at.bofh.it> <rFNY6-6k1-9@gated-at.bofh.it> <rHAam-1JR-11@gated-at.bofh.it> <rJrvX-1av-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Mon, 13 Jun 2016 00:10:29 -0400
David Long <dave.long@linaro.org> wrote:
> >> ---
> >> arch/arm64/Kconfig | 1 +
> >> arch/arm64/include/asm/debug-monitors.h | 5 +
> >> arch/arm64/include/asm/insn.h | 4 +-
> >> arch/arm64/include/asm/kprobes.h | 60 ++++
> >> arch/arm64/include/asm/probes.h | 44 +++
> >> arch/arm64/kernel/Makefile | 1 +
> >> arch/arm64/kernel/debug-monitors.c | 18 +-
> >> arch/arm64/kernel/kprobes-arm64.c | 144 +++++++++
> >> arch/arm64/kernel/kprobes-arm64.h | 35 +++
> >> arch/arm64/kernel/kprobes.c | 526 ++++++++++++++++++++++++++++++++
> >
> > Not sure why kprobes.c and kprobes-arm64.c are splitted.
> >
> >
>
> This comes from the model of the arm32 kprobes code where handling of
> the low-level instruction simulation is implemented in separate files
> for 32-bit vs. thumb instructions. It should make a little more sense
> in the future when additional instruction simulation code will hopefully
> be added for those instructions we cannot currently single-step
> out-of-line. It also probably *could* be merged into one file.
Hmm, at least the name of arch/arm64/kernel/kprobes-arm64.c is
meaningless. As we've done in x86, I think we can make it
arch/arm64/kernel/kprobes/decode-insn.{c,h}
[..]
> >> +
> >> +/* Return:
> >> + * INSN_REJECTED If instruction is one not allowed to kprobe,
> >> + * INSN_GOOD If instruction is supported and uses instruction slot,
> >> + * INSN_GOOD_NO_SLOT If instruction is supported but doesn't use its slot.
> >
> > Is there any chance to return INSN_GOOD_NO_SLOT?
> >
>
> Ah, that gets used later when simulation support is added. I've removed
> this enum value from this commit and will add it to the later one.
> Please no one complain about using an enum instead of a bool, it will
> eventually have three possible values.
OK :)
[..]
> >> +enum kprobe_insn __kprobes
> >> +arm_kprobe_decode_insn(kprobe_opcode_t *addr, struct arch_specific_insn *asi)
> >> +{
> >> + enum kprobe_insn decoded;
> >> + kprobe_opcode_t insn = le32_to_cpu(*addr);
> >> + kprobe_opcode_t *scan_start = addr - 1;
> >> + kprobe_opcode_t *scan_end = addr - MAX_ATOMIC_CONTEXT_SIZE;
> >> +#if defined(CONFIG_MODULES) && defined(MODULES_VADDR)
> >> + struct module *mod;
> >> +#endif
> >> +
> >> + if (addr >= (kprobe_opcode_t *)_text &&
> >> + scan_end < (kprobe_opcode_t *)_text)
> >> + scan_end = (kprobe_opcode_t *)_text;
> >> +#if defined(CONFIG_MODULES) && defined(MODULES_VADDR)
> >> + else {
> >> + preempt_disable();
> >> + mod = __module_address((unsigned long)addr);
> >> + if (mod && within_module_init((unsigned long)addr, mod) &&
> >> + !within_module_init((unsigned long)scan_end, mod))
> >> + scan_end = (kprobe_opcode_t *)mod->init_layout.base;
> >> + else if (mod && within_module_core((unsigned long)addr, mod) &&
> >> + !within_module_core((unsigned long)scan_end, mod))
> >> + scan_end = (kprobe_opcode_t *)mod->core_layout.base;
> >
> > What happen if mod == NULL? it should be return error, isn't it?
> >
>
> No, it should be fine. It just means it didn't have to do either of the
> extra checks to limit the end of the search through the code to the
> boundary of one of the corresponding module text sections. It means the
> instruction is in the regular kernel (non-module) text segment.
Ah, I see. It is OK then. :)
Thank you,
--
Masami Hiramatsu <mhiramat@kernel.org>
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v13 00/10] arm64: Add kernel probes (kprobes) support David Long <dave.long@linaro.org> - 2016-06-03 05:30 +0200
[PATCH v13 04/10] arm64: Blacklist non-kprobe-able symbol David Long <dave.long@linaro.org> - 2016-06-03 05:30 +0200
Re: [PATCH v13 04/10] arm64: Blacklist non-kprobe-able symbol Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-04 05:50 +0200
Re: [PATCH v13 04/10] arm64: Blacklist non-kprobe-able symbol David Long <dave.long@linaro.org> - 2016-06-07 06:00 +0200
Re: [PATCH v13 04/10] arm64: Blacklist non-kprobe-able symbol David Long <dave.long@linaro.org> - 2016-06-10 21:20 +0200
[PATCH v13 06/10] arm64: Treat all entry code as non-kprobe-able David Long <dave.long@linaro.org> - 2016-06-03 05:30 +0200
Re: [PATCH v13 06/10] arm64: Treat all entry code as non-kprobe-able Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-07 02:40 +0200
[PATCH v13 10/10] kprobes: Add arm64 case in kprobe example module David Long <dave.long@linaro.org> - 2016-06-03 05:30 +0200
Re: [PATCH v13 10/10] kprobes: Add arm64 case in kprobe example module Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-07 12:20 +0200
[PATCH v13 03/10] arm64: add conditional instruction simulation support David Long <dave.long@linaro.org> - 2016-06-03 05:30 +0200
Re: [PATCH v13 03/10] arm64: add conditional instruction simulation support Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-04 06:00 +0200
Re: [PATCH v13 03/10] arm64: add conditional instruction simulation support David Long <dave.long@linaro.org> - 2016-06-13 06:30 +0200
[PATCH v13 05/10] arm64: Kprobes with single stepping support David Long <dave.long@linaro.org> - 2016-06-03 05:30 +0200
Re: [PATCH v13 05/10] arm64: Kprobes with single stepping support Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-08 03:10 +0200
Re: [PATCH v13 05/10] arm64: Kprobes with single stepping support David Long <dave.long@linaro.org> - 2016-06-13 06:20 +0200
Re: [PATCH v13 05/10] arm64: Kprobes with single stepping support Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-13 09:00 +0200
Re: [PATCH v13 05/10] arm64: Kprobes with single stepping support David Long <dave.long@linaro.org> - 2016-06-13 17:30 +0200
Re: [PATCH v13 05/10] arm64: Kprobes with single stepping support Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-14 02:50 +0200
Re: [PATCH v13 05/10] arm64: Kprobes with single stepping support David Long <dave.long@linaro.org> - 2016-06-22 20:30 +0200
Re: [PATCH v13 05/10] arm64: Kprobes with single stepping support Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-14 03:50 +0200
[PATCH v13 01/10] arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature David Long <dave.long@linaro.org> - 2016-06-03 05:30 +0200
Re: [PATCH v13 01/10] arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-03 13:40 +0200
Re: [PATCH v13 01/10] arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature Li Bin <huawei.libin@huawei.com> - 2016-06-20 05:00 +0200
Re: [PATCH v13 01/10] arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature David Long <dave.long@linaro.org> - 2016-06-23 16:00 +0200
[PATCH v13 02/10] arm64: Add more test functions to insn.c David Long <dave.long@linaro.org> - 2016-06-03 05:30 +0200
Re: [PATCH v13 02/10] arm64: Add more test functions to insn.c Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-08 03:20 +0200
Re: [PATCH v13 02/10] arm64: Add more test functions to insn.c David Long <dave.long@linaro.org> - 2016-06-10 17:00 +0200
[PATCH v13 09/10] arm64: Add kernel return probes support (kretprobes) David Long <dave.long@linaro.org> - 2016-06-03 05:40 +0200
Re: [PATCH v13 09/10] arm64: Add kernel return probes support (kretprobes) Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-07 12:30 +0200
Re: [PATCH v13 09/10] arm64: Add kernel return probes support (kretprobes) David Long <dave.long@linaro.org> - 2016-06-22 20:20 +0200
[PATCH v13 08/10] arm64: Add trampoline code for kretprobes David Long <dave.long@linaro.org> - 2016-06-03 05:40 +0200
Re: [PATCH v13 08/10] arm64: Add trampoline code for kretprobes Masami Hiramatsu <mhiramat@kernel.org> - 2016-06-07 12:40 +0200
Re: [PATCH v13 08/10] arm64: Add trampoline code for kretprobes David Long <dave.long@linaro.org> - 2016-06-13 06:30 +0200
[PATCH v13 07/10] arm64: kprobes instruction simulation support David Long <dave.long@linaro.org> - 2016-06-03 05:40 +0200
csiph-web