Print this page
11787 Kernel needs to be built with retpolines
11788 Kernel needs to generally use RSB stuffing
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: John Levon <john.levon@joyent.com>
*** 169,178 ****
--- 169,186 ----
andq $PS_ACHK, %rsi
movq %rsi, T_USERACC(%rax)
call smap_enable
/*
+ * Take a moment to potentially clear the RSB buffer. This is done to
+ * prevent various Spectre variant 2 and SpectreRSB attacks. This may
+ * not be sufficient. Please see uts/intel/ia32/ml/retpoline.s for more
+ * information about this.
+ */
+ call x86_rsb_stuff
+
+ /*
* Save non-volatile registers, and set return address for current
* thread to resume_return.
*
* %r12 = t (new thread) when done
*/
*** 488,496 ****
ENTRY(thread_start)
popq %rax /* start() */
popq %rdi /* arg */
popq %rsi /* len */
movq %rsp, %rbp
! call *%rax
call thread_exit /* destroy thread if it returns. */
/*NOTREACHED*/
SET_SIZE(thread_start)
--- 496,504 ----
ENTRY(thread_start)
popq %rax /* start() */
popq %rdi /* arg */
popq %rsi /* len */
movq %rsp, %rbp
! INDIRECT_CALL_REG(rax)
call thread_exit /* destroy thread if it returns. */
/*NOTREACHED*/
SET_SIZE(thread_start)