aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-08-25 19:28:57 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2021-08-26 16:09:21 +0000
commit7aa47cace14948a7b8277a4b24a0ca9e0308990a (patch)
treec577d1934aa83c474681497124828fdb139be163
parent58d868c88d21b46d3d6d40a2920e7ba8996723b8 (diff)
downloadsrc-7aa47cace14948a7b8277a4b24a0ca9e0308990a.tar.gz
src-7aa47cace14948a7b8277a4b24a0ca9e0308990a.zip
amd64: remove lfence after swapgs on syscall entry
According to the description of SBSS issue at https://software.intel.com/content/www/us/en/develop/articles/software-security-guidance/technical-documentation/speculative-behavior-swapgs-and-segment-registers.html lfence after swapgs is needed only for the case when swapgs could be speculatively executed. Since syscall entry, unlike exception and interrupt entries, executes swapgs unconditionally, there is no opportunity for speculation. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D31682
-rw-r--r--sys/amd64/amd64/exception.S2
1 files changed, 0 insertions, 2 deletions
diff --git a/sys/amd64/amd64/exception.S b/sys/amd64/amd64/exception.S
index d1e49faa40e7..6471f9a3041c 100644
--- a/sys/amd64/amd64/exception.S
+++ b/sys/amd64/amd64/exception.S
@@ -524,7 +524,6 @@ prot_addrf:
SUPERALIGN_TEXT
IDTVEC(fast_syscall_pti)
swapgs
- lfence
cmpq $~0,PCPU(UCR3)
je fast_syscall_common
movq %rax,PCPU(SCRATCH_RAX)
@@ -535,7 +534,6 @@ IDTVEC(fast_syscall_pti)
SUPERALIGN_TEXT
IDTVEC(fast_syscall)
swapgs
- lfence
fast_syscall_common:
movq %rsp,PCPU(SCRATCH_RSP)
movq PCPU(RSP0),%rsp