Thread (222 messages) 222 messages, 21 authors, 2022-11-03

Re: [PATCH v2 26/39] x86/cet/shstk: Introduce routines modifying shstk

From: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
Date: 2022-10-05 22:47:30
Also in: linux-arch, linux-doc, linux-mm, lkml

On Wed, 2022-10-05 at 02:43 +0000, Andrew Cooper wrote:
On 29/09/2022 23:29, Rick Edgecombe wrote:
quoted
diff --git a/arch/x86/include/asm/special_insns.h
b/arch/x86/include/asm/special_insns.h
index 35f709f619fb..f096f52bd059 100644
--- a/arch/x86/include/asm/special_insns.h
+++ b/arch/x86/include/asm/special_insns.h
@@ -223,6 +223,19 @@ static inline void clwb(volatile void *__p)
               : [pax] "a" (p));
  }
  
+#ifdef CONFIG_X86_SHADOW_STACK
+static inline int write_user_shstk_64(u64 __user *addr, u64 val)
+{
+     asm_volatile_goto("1: wrussq %[val], (%[addr])\n"
+                       _ASM_EXTABLE(1b, %l[fail])
+                       :: [addr] "r" (addr), [val] "r" (val)
+                       :: fail);
"1: wrssq %[val], %[addr]\n"
_ASM_EXTABLE(1b, %l[fail])
: [addr] "+m" (*addr)
: [val] "r" (val)
:: fail

Otherwise you've failed to tell the compiler that you wrote to *addr.

With that fixed, it's not volatile because there are no unexpressed
side
effects.
Ok, thanks!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help