From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <catalin.marinas@arm.com>, <will@kernel.org>,
<mark.rutland@arm.com>, <oleg@redhat.com>, <kees@kernel.org>,
<luto@amacapital.net>, <wad@chromium.org>, <peterz@infradead.org>,
<ada.coupriediaz@arm.com>, <linusw@kernel.org>,
<yeoreum.yun@arm.com>, <kevin.brodsky@arm.com>,
<anshuman.khandual@arm.com>, <james.morse@arm.com>,
<thuth@redhat.com>, <vladimir.murzin@arm.com>, <tglx@kernel.org>,
<broonie@kernel.org>, <liqiang01@kylinos.cn>,
<ryan.roberts@arm.com>, <pengcan@kylinos.cn>,
<kmehltretter@gmail.com>, <linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v19 01/14] arm64: ptrace: Fix redundant syscall exit stop for PTRACE_SYSEMU_SINGLESTEP
Date: Wed, 23 Sep 2026 16:28:27 +0800 [thread overview]
Message-ID: <40c729ba-8df0-4ec4-9987-e4096106e968@huawei.com> (raw)
In-Reply-To: <20260922035510.1090299-2-ruanjinjie@huawei.com>
Will fix the pseudo-singlestep problem as sashiko pointed as below.
https://sashiko.dev/#/patchset/20260922035510.1090299-1-ruanjinjie%40huawei.com
在 2026/9/22 11:54, Jinjie Ruan 写道:
> PTRACE_SYSEMU_SINGLESTEP sets both _TIF_SYSCALL_EMU and _TIF_SINGLESTEP.
> arm64 currently reports a syscall exit stop whenever _TIF_SINGLESTEP is
> set, regardless of emulation state.
>
> This violates the ptrace man page (Syscall-stops section):
>
> "If the tracee was restarted by PTRACE_SYSCALL or PTRACE_SYSEMU,
> the tracee enters syscall-enter-stop just prior to entering any
> system call (which will not be executed if the restart was using
> PTRACE_SYSEMU, regardless of any change made to registers at this
> point or how the tracee is restarted after this stop). ...
> If the tracee is continued using any other method (including
> PTRACE_SYSEMU), no syscall-exit-stop occurs. Note that all mentions
> PTRACE_SYSEMU apply equally to PTRACE_SYSEMU_SINGLESTEP."
>
> Fix by introducing report_single_step(), which returns false when
> _TIF_SYSCALL_EMU is set, skipping the redundant exit stop.
>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Oleg Nesterov <oleg@redhat.com>
> Fixes: ac2081cdc4d9 ("arm64: ptrace: Consistently use pseudo-singlestep exceptions")
> Reviewed-by: Ada Couprie Diaz <ada.coupriediaz@arm.com>
> Reviewed-by: Linus Walleij <linusw@kernel.org>
> Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com>
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
> arch/arm64/kernel/ptrace.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
> index f743cbec1c3a..96462de75d4b 100644
> --- a/arch/arm64/kernel/ptrace.c
> +++ b/arch/arm64/kernel/ptrace.c
> @@ -2482,16 +2482,26 @@ int syscall_trace_enter(struct pt_regs *regs)
> return regs->syscallno;
> }
>
> +static inline bool report_single_step(unsigned long flags)
> +{
> + if (flags & _TIF_SYSCALL_EMU)
> + return false;
> +
> + return flags & _TIF_SINGLESTEP;
> +}
> +
> void syscall_trace_exit(struct pt_regs *regs)
> {
> unsigned long flags = read_thread_flags();
> + bool step;
>
> audit_syscall_exit(regs);
>
> if (flags & _TIF_SYSCALL_TRACEPOINT)
> trace_sys_exit(regs, syscall_get_return_value(current, regs));
>
> - if (flags & (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP))
> + step = report_single_step(flags);
> + if (step || flags & _TIF_SYSCALL_TRACE)
> report_syscall_exit(regs);
>
> rseq_syscall(regs);
--
Best regards,
Jinjie
next prev parent reply other threads:[~2026-09-23 9:10 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-22 3:54 [PATCH v19 00/14] arm64: entry: Convert to Generic Entry Jinjie Ruan
2026-09-22 3:54 ` [PATCH v19 01/14] arm64: ptrace: Fix redundant syscall exit stop for PTRACE_SYSEMU_SINGLESTEP Jinjie Ruan
2026-09-23 8:28 ` Jinjie Ruan [this message]
2026-09-22 3:54 ` [PATCH v19 02/14] arm64: ptrace: Rework audit_syscall_entry() Jinjie Ruan
2026-09-22 3:54 ` [PATCH v19 03/14] arm64: ptrace: Open-code seccomp check in syscall_trace_enter() Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 04/14] arm64: ptrace: Rename and clean up syscall_trace_enter() Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 05/14] arm64: ptrace: Protect rseq_syscall() from tracer PC modifications Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 06/14] arm64: syscall: Rework the syscall exit path in el0_svc_common() Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 07/14] arm64: ptrace: Pass thread flags to trace enter/exit Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 08/14] arm64: ptrace: Extract arm64_syscall_exit_to_user_mode_work() helper Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 09/14] arm64: ptrace: Align syscall exit work semantics with generic entry Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 10/14] arm64: syscall: Use exit-specific flags check in el0_svc_common() Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 11/14] arm64: syscall: Simplify el0_svc_common() syscall exit path Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 12/14] arm64: ptrace: Make return type of arm64_syscall_trace_enter() bool Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 13/14] arm64: entry: Convert to generic entry Jinjie Ruan
2026-09-22 3:55 ` [PATCH v19 14/14] arm64: Inline el0_svc_common() Jinjie Ruan
2026-09-22 18:29 ` [PATCH v19 00/14] arm64: entry: Convert to Generic Entry Kees Cook
2026-09-24 9:32 ` Jinjie Ruan
2026-09-25 0:05 ` Kees Cook
2026-09-28 1:50 ` Jinjie Ruan
2026-09-30 6:51 ` Jinjie Ruan
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=40c729ba-8df0-4ec4-9987-e4096106e968@huawei.com \
--to=ruanjinjie@huawei.com \
--cc=ada.coupriediaz@arm.com \
--cc=anshuman.khandual@arm.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=james.morse@arm.com \
--cc=kees@kernel.org \
--cc=kevin.brodsky@arm.com \
--cc=kmehltretter@gmail.com \
--cc=linusw@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liqiang01@kylinos.cn \
--cc=luto@amacapital.net \
--cc=mark.rutland@arm.com \
--cc=oleg@redhat.com \
--cc=pengcan@kylinos.cn \
--cc=peterz@infradead.org \
--cc=ryan.roberts@arm.com \
--cc=tglx@kernel.org \
--cc=thuth@redhat.com \
--cc=vladimir.murzin@arm.com \
--cc=wad@chromium.org \
--cc=will@kernel.org \
--cc=yeoreum.yun@arm.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 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.