From: Will Deacon <will@kernel.org>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Yiqi Sun <sunyiqixm@gmail.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, rmk+kernel@armlinux.org.uk,
kees@kernel.org, mark.rutland@arm.com
Subject: Re: [PATCH v2] arm64: ptrace: use live x0 for seccomp and audit after ptrace
Date: Tue, 14 Jul 2026 14:56:37 +0100 [thread overview]
Message-ID: <alZAFWIe8MFuOTfB@willie-the-truck> (raw)
In-Reply-To: <1d55c62e-7c08-4b2b-a009-b770c5ac13bc@huawei.com>
On Tue, Jul 14, 2026 at 11:20:20AM +0800, Jinjie Ruan wrote:
>
>
> On 7/13/2026 10:07 PM, Will Deacon wrote:
> > On Mon, Jul 13, 2026 at 03:49:18PM +0800, Jinjie Ruan wrote:
> >> On 7/1/2026 1:29 AM, Catalin Marinas wrote:
> >>> I think we need to keep orig_x0 as our original arg0 throughout the
> >>> kernel and just fix the tracer path to sync it on the syscall entry. It
> >>> doesn't unclutter the code but it shouldn't break the ABI either (unless
> >>> someone relied on the ptrace change x0 and not being noticed by
> >>> seccomp). Something like below:
> >>>
> >>> ----------------8<-----------------------------
> >>> diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
> >>> index 4d08598e2891..cd21b301e154 100644
> >>> --- a/arch/arm64/kernel/ptrace.c
> >>> +++ b/arch/arm64/kernel/ptrace.c
> >>> @@ -2417,6 +2417,18 @@ int syscall_trace_enter(struct pt_regs *regs)
> >>> ret = report_syscall_entry(regs);
> >>> if (ret || (flags & _TIF_SYSCALL_EMU))
> >>> return NO_SYSCALL;
> >>> + /*
> >>> + * Keep orig_x0 authoritative so that seccomp (via
> >>> + * syscall_get_arguments()), audit and the restart path all
> >>> + * see the same first argument the syscall is dispatched with,
> >>> + * even if it has been updated by a tracer. Skip this for
> >>> + * NO_SYSCALL (set either by the user or the tracer) as
> >>> + * regs[0] holds the return value (see the comment in
> >>> + * el0_svc_common()). For compat, orig_r0 is provided directly
> >>> + * through GPR index 17.
> >>> + */
> >>> + if (!is_compat_task() && regs->syscallno != NO_SYSCALL)
> >>> + regs->orig_x0 = regs->regs[0];
> >>
> >> Can we place this fix in report_syscall_entry()? The generic entry
> >> framework has already reserved the function
> >> arch_ptrace_report_syscall_permit_entry() for architecture-specific
> >> customization, so switching to it might be more convenient.
> >
> > Hmm, your comment prompted me to look at this some more and now I'm
> > unsure that the seccomp handling is correct, even with the fix above.
>
> Hi Will,
>
> It seems that this issue can be reproduced itself and Catalin's patch
> can fix the original question.
I'm not disputing that it fixes the reported issue, but I don't think
it's complete.
> I used DeepSeek to help write the following test method and script,
> which can successfully reproduce the issue.
I also have similar testcases for this, thanks.
I'll send a patch shortly.
Will
next prev parent reply other threads:[~2026-07-14 13:56 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-29 6:54 [PATCH] fix: arm64: syscall: use live x0 for syscall_get_arguments() arg0 Yiqi Sun
2026-06-01 12:43 ` Will Deacon
2026-06-03 9:07 ` Yiqi Sun
2026-06-19 16:05 ` Will Deacon
2026-06-25 10:45 ` [PATCH v2] arm64: ptrace: use live x0 for seccomp and audit after ptrace Yiqi Sun
2026-06-25 11:11 ` Yiqi Sun
2026-06-25 11:30 ` Yiqi Sun
2026-06-29 13:09 ` Will Deacon
2026-06-30 17:29 ` Catalin Marinas
2026-07-01 8:47 ` Catalin Marinas
2026-07-10 14:04 ` Will Deacon
2026-07-13 7:49 ` Jinjie Ruan
2026-07-13 14:07 ` Will Deacon
2026-07-14 3:20 ` Jinjie Ruan
2026-07-14 13:56 ` Will Deacon [this message]
2026-07-13 6:59 ` [PATCH] fix: arm64: syscall: use live x0 for syscall_get_arguments() arg0 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=alZAFWIe8MFuOTfB@willie-the-truck \
--to=will@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=kees@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=rmk+kernel@armlinux.org.uk \
--cc=ruanjinjie@huawei.com \
--cc=sunyiqixm@gmail.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.