Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
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


  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox