Re: [RFC PATCH v2 18/27] x86/cet/shstk: Introduce WRUSS instruction
From: Peter Zijlstra <peterz@infradead.org>
Date: 2018-07-11 09:45:06
Also in:
linux-api, linux-arch, linux-mm, lkml
From: Peter Zijlstra <peterz@infradead.org>
Date: 2018-07-11 09:45:06
Also in:
linux-api, linux-arch, linux-mm, lkml
On Tue, Jul 10, 2018 at 03:26:30PM -0700, Yu-cheng Yu wrote:
WRUSS is a new kernel-mode instruction but writes directly to user shadow stack memory. This is used to construct a return address on the shadow stack for the signal handler. This instruction can fault if the user shadow stack is invalid shadow stack memory. In that case, the kernel does fixup.
+static inline int write_user_shstk_64(unsigned long addr, unsigned long val)
+{
+ int err = 0;
+
+ asm volatile("1: wrussq %[val], (%[addr])\n"
+ "xor %[err], %[err]\n"this XOR is superfluous, you already cleared @err above.
+ "2:\n"
+ ".section .fixup,\"ax\"\n"
+ "3: mov $-1, %[err]; jmp 2b\n"
+ ".previous\n"
+ _ASM_EXTABLE(1b, 3b)
+ : [err] "=a" (err)
+ : [val] "S" (val), [addr] "D" (addr));
+
+ return err;
+}
+#endif /* CONFIG_X86_INTEL_CET */
+
#define nop() asm volatile ("nop")What happened to: https://lkml.kernel.org/r/1528729376.4526.0.camel@2b52.sc.intel.com -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html