From: Brian Gerst <brgerst@gmail.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org
Cc: "Thomas Gleixner" <tglx@linutronix.de>,
"Borislav Petkov" <bp@alien8.de>,
"H . Peter Anvin" <hpa@zytor.com>,
"Andy Lutomirski" <luto@kernel.org>,
"Mika Penttilä" <mpenttil@redhat.com>,
"Brian Gerst" <brgerst@gmail.com>
Subject: [PATCH v2 1/6] x86/entry/64: Remove obsolete comment on tracing vs. SYSRET
Date: Fri, 21 Jul 2023 12:10:12 -0400 [thread overview]
Message-ID: <20230721161018.50214-2-brgerst@gmail.com> (raw)
In-Reply-To: <20230721161018.50214-1-brgerst@gmail.com>
This comment comes from a time when the kernel attempted to use SYSRET
on all returns to userspace, including interrupts and exceptions. Ever
since commit fffbb5dc ("Move opportunistic sysret code to syscall code
path"), SYSRET is only used for returning from system calls. The
specific tracing issue listed in this comment is not possible anymore.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
---
arch/x86/entry/entry_64.S | 19 +++----------------
1 file changed, 3 insertions(+), 16 deletions(-)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 91f6818884fa..c01776a51545 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -166,22 +166,9 @@ SYM_INNER_LABEL(entry_SYSCALL_64_after_hwframe, SYM_L_GLOBAL)
jne swapgs_restore_regs_and_return_to_usermode
/*
- * SYSCALL clears RF when it saves RFLAGS in R11 and SYSRET cannot
- * restore RF properly. If the slowpath sets it for whatever reason, we
- * need to restore it correctly.
- *
- * SYSRET can restore TF, but unlike IRET, restoring TF results in a
- * trap from userspace immediately after SYSRET. This would cause an
- * infinite loop whenever #DB happens with register state that satisfies
- * the opportunistic SYSRET conditions. For example, single-stepping
- * this user code:
- *
- * movq $stuck_here, %rcx
- * pushfq
- * popq %r11
- * stuck_here:
- *
- * would never get past 'stuck_here'.
+ * SYSRET cannot restore RF. It can restore TF, but unlike IRET,
+ * restoring TF results in a trap from userspace immediately after
+ * SYSRET.
*/
testq $(X86_EFLAGS_RF|X86_EFLAGS_TF), %r11
jnz swapgs_restore_regs_and_return_to_usermode
--
2.41.0
next prev parent reply other threads:[~2023-07-21 16:10 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-21 16:10 [PATCH v2 0/6] x86: Clean up fast syscall return validation Brian Gerst
2023-07-21 16:10 ` Brian Gerst [this message]
2023-10-05 8:28 ` [tip: x86/entry] x86/entry/64: Remove obsolete comment on tracing vs. SYSRET tip-bot2 for Brian Gerst
2023-07-21 16:10 ` [PATCH v2 2/6] x86/entry/64: Convert SYSRET validation tests to C Brian Gerst
2023-07-23 9:53 ` Li, Xin3
2023-07-23 11:17 ` Brian Gerst
2023-07-21 16:10 ` [PATCH v2 3/6] x86/entry/compat: Combine return value test from syscall handler Brian Gerst
2023-10-05 8:28 ` [tip: x86/entry] " tip-bot2 for Brian Gerst
2023-07-21 16:10 ` [PATCH v2 4/6] x86/entry/32: Convert do_fast_syscall_32() to bool return type Brian Gerst
2023-10-05 8:28 ` [tip: x86/entry] " tip-bot2 for Brian Gerst
2023-07-21 16:10 ` [PATCH v2 5/6] x86/entry/32: Remove SEP test for SYSEXIT Brian Gerst
2023-10-05 8:28 ` [tip: x86/entry] " tip-bot2 for Brian Gerst
2023-07-21 16:10 ` [PATCH v2 6/6] x86/entry/32: Clean up syscall fast exit tests Brian Gerst
2023-10-05 8:22 ` [PATCH v2 0/6] x86: Clean up fast syscall return validation Ingo Molnar
2023-10-05 15:13 ` Brian Gerst
2023-10-05 20:20 ` Ingo Molnar
2023-10-06 18:59 ` H. Peter Anvin
2023-10-06 21:32 ` Brian Gerst
2023-10-07 9:42 ` Ingo Molnar
2023-10-06 23:58 ` H. Peter Anvin
2023-10-07 9:56 ` Uros Bizjak
2023-10-07 18:07 ` Linus Torvalds
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=20230721161018.50214-2-brgerst@gmail.com \
--to=brgerst@gmail.com \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mpenttil@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@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.