From: Kevin Brodsky <kevin.brodsky@arm.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>,
catalin.marinas@arm.com, will@kernel.org, oleg@redhat.com,
tglx@linutronix.de, peterz@infradead.org, luto@kernel.org,
shuah@kernel.org, kees@kernel.org, wad@chromium.org,
akpm@linux-foundation.org, ldv@strace.io, macro@orcam.me.uk,
deller@gmx.de, mark.rutland@arm.com, song@kernel.org,
mbenes@suse.cz, ryan.roberts@arm.com, ada.coupriediaz@arm.com,
anshuman.khandual@arm.com, broonie@kernel.org,
pengcan@kylinos.cn, dvyukov@google.com, kmal@cock.li,
lihongbo22@huawei.com, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org
Subject: Re: [PATCH v7 05/11] arm64/ptrace: Handle ptrace_report_syscall_entry() error
Date: Mon, 24 Nov 2025 10:16:39 +0100 [thread overview]
Message-ID: <f6350045-d1a1-4d1c-b2d3-68da841f7e34@arm.com> (raw)
In-Reply-To: <d1b5ed89-6667-a325-d209-3b43005a778b@huawei.com>
On 21/11/2025 05:15, Jinjie Ruan wrote:
>
> On 2025/11/19 1:12, Kevin Brodsky wrote:
>> On 17/11/2025 14:30, Jinjie Ruan wrote:
>>> The generic entry handle error of ptrace_report_syscall_entry(), but
>>> arm64 not.
>> This suggests that arm64 ignores the error completely, which isn't the
>> case: no syscall will be performed, but tracing will still occur as normal.
>>
>> What this patch seems to be doing is to abort the _enter sequence if
>> ptrace_report_syscall_entry() errors out. The commit title and message
>> should be reworded accordingly.
> You are right,the description is unclear .
>
>>> As the comment said, the calling arch code should abort the system
>> Which comment?
> ptrace_report_syscall_entry()
I found that later, this should be clarified in the commit message.
>>> call and must prevent normal entry so no system call is
>>> made if ptrace_report_syscall_entry() return nonzero.
>> This is already the case since we're calling forget_syscall().
> Yes. it is similar with the generic entry returns NO_SYSCALL.
My point is that this patch is not changing this - arm64 was already
skipping the syscall if ptrace_report_syscall_entry() returns an error.
>>> In preparation for moving arm64 over to the generic entry code,
>>> return early if ptrace_report_syscall_entry() encounters an error.
>>>
>>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
>>> ---
>>> arch/arm64/kernel/ptrace.c | 16 +++++++++++-----
>>> 1 file changed, 11 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
>>> index 95984bbf53db..707951ad5d24 100644
>>> --- a/arch/arm64/kernel/ptrace.c
>>> +++ b/arch/arm64/kernel/ptrace.c
>>> @@ -2317,10 +2317,10 @@ enum ptrace_syscall_dir {
>>> PTRACE_SYSCALL_EXIT,
>>> };
>>>
>>> -static void report_syscall_enter(struct pt_regs *regs)
>>> +static int report_syscall_enter(struct pt_regs *regs)
>>> {
>>> - int regno;
>>> unsigned long saved_reg;
>>> + int regno, ret;
>>>
>>> /*
>>> * We have some ABI weirdness here in the way that we handle syscall
>>> @@ -2342,9 +2342,13 @@ static void report_syscall_enter(struct pt_regs *regs)
>>> saved_reg = regs->regs[regno];
>>> regs->regs[regno] = PTRACE_SYSCALL_ENTER;
>>>
>>> - if (ptrace_report_syscall_entry(regs))
>>> + ret = ptrace_report_syscall_entry(regs);
>>> + if (ret)
>>> forget_syscall(regs);
>> The generic syscall_trace_enter() doesn't do this (i.e. setting
>> regs->syscallno to NO_SYSCALL). Is that an oversight or do we just not
>> need it? In principle this does have a visible effect (e.g. via
>> REGSET_SYSTEM_CALL).
> We just not need it because the original syscall_trace_enter() need use
> regs->syscallno as the return value, but now we return early by using
> NO_SYSCALL.
Calling forget_syscall() means setting regs->syscallno to NO_SYSCALL. It
is indeed no longer required for the entry sequence, but it does have
visible side effects. For instance, regs->syscallno can be inspected via
ptrace(PTRACE_GETREGSET, REGSET_SYSTEM_CALL). So the question is whether
we need to deviate from the generic path on arm64 (this is mostly a
question for arm64 maintainers).
- Kevin
next prev parent reply other threads:[~2025-11-24 9:17 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-17 13:30 [PATCH v7 00/11] arm64: entry: Convert to Generic Entry Jinjie Ruan
2025-11-17 13:30 ` [PATCH v7 01/11] arm64/ptrace: Split report_syscall() Jinjie Ruan
2025-11-18 17:09 ` Kevin Brodsky
2025-11-19 9:49 ` Jinjie Ruan
2025-11-25 13:06 ` Kevin Brodsky
2025-11-17 13:30 ` [PATCH v7 02/11] arm64/ptrace: Refactor syscall_trace_enter/exit() Jinjie Ruan
2025-11-18 17:09 ` Kevin Brodsky
2025-11-20 11:05 ` Jinjie Ruan
2025-11-17 13:30 ` [PATCH v7 03/11] arm64/ptrace: Refator el0_svc_common() Jinjie Ruan
2025-11-18 17:10 ` Kevin Brodsky
2025-11-20 12:03 ` Jinjie Ruan
2025-11-17 13:30 ` [PATCH v7 04/11] entry: Add syscall_exit_to_user_mode_prepare() helper Jinjie Ruan
2025-11-17 13:43 ` Thomas Gleixner
2025-11-18 17:11 ` Kevin Brodsky
2025-11-17 13:30 ` [PATCH v7 05/11] arm64/ptrace: Handle ptrace_report_syscall_entry() error Jinjie Ruan
2025-11-18 17:12 ` Kevin Brodsky
2025-11-21 4:15 ` Jinjie Ruan
2025-11-24 9:16 ` Kevin Brodsky [this message]
2025-11-17 13:30 ` [PATCH v7 06/11] arm64/ptrace: Expand secure_computing() in place Jinjie Ruan
2025-11-18 17:12 ` Kevin Brodsky
2025-11-21 7:29 ` Jinjie Ruan
2025-11-17 13:30 ` [PATCH v7 07/11] arm64/ptrace: Use syscall_get_arguments() heleper Jinjie Ruan
2025-11-18 17:12 ` Kevin Brodsky
2025-11-17 13:30 ` [PATCH v7 08/11] entry: Add arch_ptrace_report_syscall_entry/exit() Jinjie Ruan
2025-11-18 17:13 ` Kevin Brodsky
2025-11-24 9:34 ` Jinjie Ruan
2025-11-24 15:23 ` Kevin Brodsky
2025-11-25 2:43 ` Jinjie Ruan
2025-11-25 13:10 ` Kevin Brodsky
2025-11-17 13:30 ` [PATCH v7 09/11] entry: Add has_syscall_work() helper Jinjie Ruan
2025-11-18 17:13 ` Kevin Brodsky
2025-11-25 3:23 ` Jinjie Ruan
2025-11-17 13:30 ` [PATCH v7 10/11] arm64: entry: Convert to generic entry Jinjie Ruan
2025-11-18 17:14 ` Kevin Brodsky
2025-11-25 4:00 ` Jinjie Ruan
2025-11-17 13:30 ` [PATCH v7 11/11] selftests: sud_test: Support aarch64 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=f6350045-d1a1-4d1c-b2d3-68da841f7e34@arm.com \
--to=kevin.brodsky@arm.com \
--cc=ada.coupriediaz@arm.com \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=deller@gmx.de \
--cc=dvyukov@google.com \
--cc=kees@kernel.org \
--cc=kmal@cock.li \
--cc=ldv@strace.io \
--cc=lihongbo22@huawei.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=luto@kernel.org \
--cc=macro@orcam.me.uk \
--cc=mark.rutland@arm.com \
--cc=mbenes@suse.cz \
--cc=oleg@redhat.com \
--cc=pengcan@kylinos.cn \
--cc=peterz@infradead.org \
--cc=ruanjinjie@huawei.com \
--cc=ryan.roberts@arm.com \
--cc=shuah@kernel.org \
--cc=song@kernel.org \
--cc=tglx@linutronix.de \
--cc=wad@chromium.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.