Print this page
11859 need swapgs mitigation
Reviewed by: Robert Mustacchi <rm@fingolfin.org>
Reviewed by: Dan McDonald <danmcd@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@fingolfin.org>
*** 22,31 ****
--- 22,35 ----
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
+ /*
+ * Copyright 2019 Joyent, Inc.
+ */
+
#ifndef _AMD64_SYS_PRIVREGS_H
#define _AMD64_SYS_PRIVREGS_H
#include <sys/ccompile.h>
*** 204,225 ****
__SAVE_REGS; \
cmpw $KCS_SEL, REGOFF_CS(%rsp); \
je 6f; \
movq $0, REGOFF_SAVFP(%rsp); \
SWAPGS; \
! 6: CLEAN_CS
#define INTR_POP \
leaq sys_lcall32(%rip), %r11;\
cmpq %r11, REGOFF_RIP(%rsp); \
__RESTORE_REGS; \
je 5f; \
cmpw $KCS_SEL, REGOFF_CS(%rsp);\
je 8f; \
5: SWAPGS; \
! 8: addq $REGOFF_RIP, %rsp
#define USER_POP \
__RESTORE_REGS; \
SWAPGS; \
addq $REGOFF_RIP, %rsp /* Adjust %rsp to prepare for iretq */
--- 208,235 ----
__SAVE_REGS; \
cmpw $KCS_SEL, REGOFF_CS(%rsp); \
je 6f; \
movq $0, REGOFF_SAVFP(%rsp); \
SWAPGS; \
! 6: lfence; /* swapgs mitigation */ \
! CLEAN_CS
#define INTR_POP \
leaq sys_lcall32(%rip), %r11;\
cmpq %r11, REGOFF_RIP(%rsp); \
__RESTORE_REGS; \
je 5f; \
cmpw $KCS_SEL, REGOFF_CS(%rsp);\
je 8f; \
5: SWAPGS; \
! 8: lfence; /* swapgs mitigation */ \
! addq $REGOFF_RIP, %rsp
+ /*
+ * No need for swapgs mitigation: it's unconditional, and we're heading
+ * back to userspace.
+ */
#define USER_POP \
__RESTORE_REGS; \
SWAPGS; \
addq $REGOFF_RIP, %rsp /* Adjust %rsp to prepare for iretq */