From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>,
"Peter Zijlstra (Intel)" <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.1.y 3/5] entry: Remove syscall_enter_from_user_mode_prepare()
Date: Tue, 8 Sep 2026 08:20:28 -0400 [thread overview]
Message-ID: <20260908122030.2052577-3-sashal@kernel.org> (raw)
In-Reply-To: <20260908122030.2052577-1-sashal@kernel.org>
From: Thomas Gleixner <tglx@linutronix.de>
[ Upstream commit 54a5ab56242f96555999aaa41228f77b4a76e386 ]
Open code the only user in the x86 syscall code and reduce the zoo of
functions.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Link: https://patch.msgid.link/20251027084306.652839989@linutronix.de
[ Stable: Open-code the helper in arch/x86/entry/common.c, where the
32-bit syscall entry code still resides. ]
[ sashal: Reduced backport -- upstream 54a5ab56242f9 touches 3 file(s), this
backport carries 3. Not backported here:
arch/x86/entry/syscall_32.c
This note is generated from the file lists only; see the resolution record
for the reasoning. ]
Stable-dep-of: 4a3591287fb7 ("entry: Fix seccomp bypass after ptrace with TSYNC")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/x86/entry/common.c | 3 ++-
include/linux/entry-common.h | 26 +++++---------------------
kernel/entry/syscall-common.c | 8 --------
3 files changed, 7 insertions(+), 30 deletions(-)
diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c
index 3c88bdf96e7a5..cbc335c61df1d 100644
--- a/arch/x86/entry/common.c
+++ b/arch/x86/entry/common.c
@@ -236,9 +236,10 @@ static noinstr bool __do_fast_syscall_32(struct pt_regs *regs)
* fetch EBP before invoking any of the syscall entry work
* functions.
*/
- syscall_enter_from_user_mode_prepare(regs);
+ enter_from_user_mode(regs);
instrumentation_begin();
+ local_irq_enable();
/* Fetch EBP from where the vDSO stashed it. */
if (IS_ENABLED(CONFIG_X86_64)) {
/*
diff --git a/include/linux/entry-common.h b/include/linux/entry-common.h
index ed08489e1d329..0d5dc199ed8ca 100644
--- a/include/linux/entry-common.h
+++ b/include/linux/entry-common.h
@@ -88,23 +88,6 @@ static __always_inline long syscall_trace_enter(struct pt_regs *regs, long sysca
return syscall_enter_audit(regs, syscall, work);
}
-/**
- * syscall_enter_from_user_mode_prepare - Establish state and enable interrupts
- * @regs: Pointer to currents pt_regs
- *
- * Invoked from architecture specific syscall entry code with interrupts
- * disabled. The calling code has to be non-instrumentable. When the
- * function returns all state is correct, interrupts are enabled and the
- * subsequent functions can be instrumented.
- *
- * This handles lockdep, RCU (context tracking) and tracing state, i.e.
- * the functionality provided by enter_from_user_mode().
- *
- * This is invoked when there is extra architecture specific functionality
- * to be done between establishing state and handling user mode entry work.
- */
-void syscall_enter_from_user_mode_prepare(struct pt_regs *regs);
-
/**
* syscall_enter_from_user_mode_work - Check and handle work before invoking
* a syscall
@@ -112,8 +95,8 @@ void syscall_enter_from_user_mode_prepare(struct pt_regs *regs);
* @syscall: The syscall number
*
* Invoked from architecture specific syscall entry code with interrupts
- * enabled after invoking syscall_enter_from_user_mode_prepare() and extra
- * architecture specific work.
+ * enabled after invoking enter_from_user_mode(), enabling interrupts and
+ * extra architecture specific work.
*
* Returns: The original or a modified syscall number
*
@@ -149,8 +132,9 @@ static __always_inline long syscall_enter_from_user_mode_work(struct pt_regs *re
* function returns all state is correct, interrupts are enabled and the
* subsequent functions can be instrumented.
*
- * This is combination of syscall_enter_from_user_mode_prepare() and
- * syscall_enter_from_user_mode_work().
+ * This is the combination of enter_from_user_mode() and
+ * syscall_enter_from_user_mode_work() to be used when there is no
+ * architecture specific work to be done between the two.
*
* Returns: The original or a modified syscall number. See
* syscall_enter_from_user_mode_work() for further explanation.
diff --git a/kernel/entry/syscall-common.c b/kernel/entry/syscall-common.c
index 5bc39874b0b00..1570b2f221460 100644
--- a/kernel/entry/syscall-common.c
+++ b/kernel/entry/syscall-common.c
@@ -29,14 +29,6 @@ long syscall_enter_audit(struct pt_regs *regs, long syscall,
return syscall;
}
-noinstr void syscall_enter_from_user_mode_prepare(struct pt_regs *regs)
-{
- enter_from_user_mode(regs);
- instrumentation_begin();
- local_irq_enable();
- instrumentation_end();
-}
-
/*
* If SYSCALL_EMU is set, then the only reason to report is when
* SINGLESTEP is set (i.e. PTRACE_SYSEMU_SINGLESTEP). This syscall
--
2.53.0
next prev parent reply other threads:[~2026-09-08 12:20 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-03 13:40 FAILED: patch "[PATCH] entry: Fix seccomp bypass after ptrace with TSYNC" failed to apply to 6.1-stable tree gregkh
2026-09-08 12:20 ` [PATCH 6.1.y 1/5] entry: Inline syscall_exit_to_user_mode() Sasha Levin
2026-09-08 12:20 ` [PATCH 6.1.y 2/5] entry: Split generic entry into generic exception and syscall entry Sasha Levin
2026-09-08 12:20 ` Sasha Levin [this message]
2026-09-08 12:20 ` [PATCH 6.1.y 4/5] entry: Remove unused syscall argument from syscall_trace_enter() Sasha Levin
2026-09-08 12:20 ` [PATCH 6.1.y 5/5] entry: Fix seccomp bypass after ptrace with TSYNC Sasha Levin
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=20260908122030.2052577-3-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
/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.