From: Catalin Marinas <catalin.marinas@arm.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: linux-arm-kernel@lists.infradead.org,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Will Deacon <will@kernel.org>,
ckennelly@google.com, dvyukov@google.com,
linux-kernel@vger.kernel.org, mathias@mongodb.com,
mathieu.desnoyers@efficios.com, ruanjinjie@huawei.com
Subject: Re: [PATCHv2] arm64/entry: Fix arm64-specific rseq brokenness
Date: Fri, 8 May 2026 15:24:01 +0100 [thread overview]
Message-ID: <af3yAVRI1M686cbu@arm.com> (raw)
In-Reply-To: <20260508142023.3268622-1-mark.rutland@arm.com>
On Fri, May 08, 2026 at 03:20:23PM +0100, Mark Rutland wrote:
> Mathias Stearn reports that since v6.19, there are two big issues
> affecting rseq:
>
> (1) On arm64 specifically, rseq critical sections aren't aborted when
> they should be.
>
> (2) The 'cpu_id_start' field is no longer written by the kernel in all
> cases it used to be, including some cases where TCMalloc depends on
> the kernel clobbering the field.
>
> This patch fixes issue #1. This patch DOES NOT fix issue #2, which will
> need to be addressed by other patches.
>
> The arm64-specific brokenness is a result of commits:
>
> 2fc0e4b4126c ("rseq: Record interrupt from user space")
> 39a167560a61 ("rseq: Optimize event setting")
>
> The first commit failed to add a call to rseq_note_user_irq_entry() on
> arm64. Thus arm64 never sets rseq_event::user_irq to record that it may
> be necessary to abort an active rseq critical section upon return to
> userspace. On its own, this commit had no functional impact as the value
> of rseq_event::user_irq was not consumed.
>
> The second commit relied upon rseq_event::user_irq to determine whether
> or not to bother to perform rseq work when returning to userspace. As
> rseq_event::user_irq wasn't set on arm64, this work would be skipped,
> and consequently an active rseq critical section would not be aborted.
>
> Fix this by giving arm64 syscall-specific entry/exit paths, and
> performing the relevant logic in syscall and non-syscall paths,
> including calling rseq_note_user_irq_entry() for non-syscall entry.
>
> Currently arm64 cannot use syscall_enter_from_user_mode(),
> syscall_exit_to_user_mode(), and irqentry_exit_to_user_mode(), due to
> ordering constraints with exception masking, and risk of ABI breakage
> for syscall tracing/audit/etc. For the moment the entry/exit logic is
> left as arm64-specific, directly using enter_from_user_mode() and
> exit_to_user_mode(), but mirroring the generic code.
>
> I intend to follow up with refactoring/cleanup, as we did for kernel
> mode entry paths in commit:
>
> 041aa7a85390 ("entry: Split preemption from irqentry_exit_to_kernel_mode()")
>
> ... which will allow arm64 to use the GENERIC_IRQ_ENTRY functions directly.
>
> Fixes: 39a167560a61 ("rseq: Optimize event setting")
> Reported-by: Mathias Stearn <mathias@mongodb.com>
> Link: https://lore.kernel.org/regressions/CAHnCjA25b+nO2n5CeifknSKHssJpPrjnf+dtr7UgzRw4Zgu=oA@mail.gmail.com/
> Signed-off-by: Mark Rutland <mark.rutland@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Chris Kennelly <ckennelly@google.com>
> Cc: Dmitry Vyukov <dvyukov@google.com>
> Cc: Jinjie Ruan <ruanjinjie@huawei.com>
> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Will Deacon <will@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
next prev parent reply other threads:[~2026-05-08 14:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-08 14:20 [PATCHv2] arm64/entry: Fix arm64-specific rseq brokenness Mark Rutland
2026-05-08 14:24 ` Catalin Marinas [this message]
2026-05-08 15:02 ` [tip: sched/urgent] " tip-bot2 for Mark Rutland
2026-05-11 3:18 ` [PATCHv2] " 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=af3yAVRI1M686cbu@arm.com \
--to=catalin.marinas@arm.com \
--cc=ckennelly@google.com \
--cc=dvyukov@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mathias@mongodb.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=peterz@infradead.org \
--cc=ruanjinjie@huawei.com \
--cc=tglx@linutronix.de \
--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.