From: Yeoreum Yun <yeoreum.yun@arm.com>
To: 1534428646@qq.com
Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com,
kristina.martsenko@arm.com, liaochang1@huawei.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH] arm64: kprobe: fix an error in single stepping support
Date: Fri, 17 Jan 2025 07:57:32 +0000 [thread overview]
Message-ID: <Z4oNbOGSluJlwpvg@e129823.arm.com> (raw)
In-Reply-To: <tencent_9DCAEBDF4D9BCDB4687B502DB6B608E4FB0A@qq.com>
Hi,
>
> It is obvious a conflict between the code and the comment.
> The function aarch64_insn_is_steppable is used to check if a mrs
> instruction can be safe in single-stepping environment, in the
> comment it says only reading DAIF bits by mrs is safe in
> single-stepping environment, and other mrs instructions are not. So
> aarch64_insn_is_steppable should returen "TRUE" if the mrs instruction
> being single stepped is reading DAIF bits.
>
> And have verified using a kprobe kernel module which reads the DAIF bits by
> function arch_local_irq_save with offset setting to 0x4, confirmed that
> without this modification, it encounters
> "kprobe_init: register_kprobe failed, returned -22" error while inserting
> the kprobe kernel module. and with this modification, it can read the DAIF
> bits in single-stepping environment.
>
> Fixes: 2dd0e8d2d2a1 ("arm64: Kprobes with single stepping support")
> Cc: stable@vger.kernel.org
> Signed-off-by: Yiren Xie <1534428646@qq.com>
> ---
> arch/arm64/kernel/probes/decode-insn.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm64/kernel/probes/decode-insn.c b/arch/arm64/kernel/probes/decode-insn.c
> index 6438bf62e753..22383eb1c22c 100644
> --- a/arch/arm64/kernel/probes/decode-insn.c
> +++ b/arch/arm64/kernel/probes/decode-insn.c
> @@ -40,7 +40,7 @@ static bool __kprobes aarch64_insn_is_steppable(u32 insn)
> */
> if (aarch64_insn_is_mrs(insn))
> return aarch64_insn_extract_system_reg(insn)
> - != AARCH64_INSN_SPCLREG_DAIF;
> + == AARCH64_INSN_SPCLREG_DAIF;
>
> /*
> * The HINT instruction is steppable only if it is in whitelist
> --
> 2.34.1
>
Thanks to correct me. yes the comments seem conflict.
However, I couldn't agree to this change.
As I mention in last, when single-step runs, all DAIF bits set,
so, the result of reading DAIF is different between before install kprobe and after.
Also, I think reading some sys_reg in single-step seems ok (i.e. SYS_MIDR_EL1).
Therefore, allowing only install kprobe on DAIF reading doesn't seem
correct.
Thanks
next prev parent reply other threads:[~2025-01-17 7:59 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-17 4:00 [PATCH] arm64: kprobe: fix an error in single stepping support 1534428646
2025-01-17 7:57 ` Yeoreum Yun [this message]
2025-02-04 11:31 ` Will Deacon
-- strict thread matches above, loose matches on Subject: below --
2025-01-11 9:56 1534428646
2025-01-11 12:23 ` kernel test robot
2025-01-12 8:31 ` Yeoreum Yun
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=Z4oNbOGSluJlwpvg@e129823.arm.com \
--to=yeoreum.yun@arm.com \
--cc=1534428646@qq.com \
--cc=catalin.marinas@arm.com \
--cc=kristina.martsenko@arm.com \
--cc=liaochang1@huawei.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=stable@vger.kernel.org \
--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 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.