linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Rick Edgecombe <rick.p.edgecombe@intel.com>
To: x86@kernel.org, "H . Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-mm@kvack.org, linux-arch@vger.kernel.org,
	linux-api@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
	Andy Lutomirski <luto@kernel.org>,
	Balbir Singh <bsingharora@gmail.com>,
	Borislav Petkov <bp@alien8.de>,
	Cyrill Gorcunov <gorcunov@gmail.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Eugene Syromiatnikov <esyr@redhat.com>,
	Florian Weimer <fweimer@redhat.com>,
	"H . J . Lu" <hjl.tools@gmail.com>, Jann Horn <jannh@google.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Kees Cook <keescook@chromium.org>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Nadav Amit <nadav.amit@gmail.com>,
	Oleg Nesterov <oleg@redhat.com>, Pavel Machek <pavel@ucw.cz>,
	Peter Zijlstra <peterz@infradead.org>,
	Randy Dunlap <rdunlap@infradead.org>,
	"Ravi V . Shankar" <ravi.v.shankar@intel.com>,
	Weijiang Yang <weijiang.yang@intel.com>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
	joao.moreira@intel.com, John Allen <john.allen@amd.com>,
	kcc@google.com, eranian@google.com, rppt@kernel.org,
	jamorris@linux.microsoft.com, dethoma@microsoft.com
Cc: rick.p.edgecombe@intel.com
Subject: [PATCH v2 28/39] x86/cet/shstk: Introduce map_shadow_stack syscall
Date: Thu, 29 Sep 2022 15:29:25 -0700	[thread overview]
Message-ID: <20220929222936.14584-29-rick.p.edgecombe@intel.com> (raw)
In-Reply-To: <20220929222936.14584-1-rick.p.edgecombe@intel.com>

When operating with shadow stacks enabled, the kernel will automatically
allocate shadow stacks for new threads, however in some cases userspace
will need additional shadow stacks. The main example of this is the
ucontext family of functions, which require userspace allocating and
pivoting to userspace managed stacks.

Unlike most other user memory permissions, shadow stacks need to be
provisioned with special data in order to be useful. They need to be setup
with a restore token so that userspace can pivot to them via the RSTORSSP
instruction. But, the security design of shadow stack's is that they
should not be written to except in limited circumstances. This presents a
problem for userspace, as to how userspace can provision this special
data, without allowing for the shadow stack to be generally writable.

Previously, a new PROT_SHADOW_STACK was attempted, which could be
mprotect()ed from RW permissions after the data was provisioned. This was
found to not be secure enough, as other thread's could write to the
shadow stack during the writable window.

The kernel can use a special instruction, WRUSS, to write directly to
userspace shadow stacks. So the solution can be that memory can be mapped
as shadow stack permissions from the beginning (never generally writable
in userspace), and the kernel itself can write the restore token.

First, a new madvise() flag was explored, which could operate on the
PROT_SHADOW_STACK memory. This had a couple downsides:
1. Extra checks were needed in mprotect() to prevent writable memory from
   ever becoming PROT_SHADOW_STACK.
2. Extra checks/vma state were needed in the new madvise() to prevent
   restore tokens being written into the middle of pre-used shadow stacks.
   It is ideal to prevent restore tokens being added at arbitrary
   locations, so the check was to make sure the shadow stack had never been
   written to.
3. It stood out from the rest of the madvise flags, as more of direct
   action than a hint at future desired behavior.

So rather than repurpose two existing syscalls (mmap, madvise) that don't
quite fit, just implement a new map_shadow_stack syscall to allow
userspace to map and setup new shadow stacks in one step. While ucontext
is the primary motivator, userspace may have other unforeseen reasons to
setup it's own shadow stacks using the WRSS instruction. Towards this
provide a flag so that stacks can be optionally setup securely for the
common case of ucontext without enabling WRSS. Or potentially have the
kernel set up the shadow stack in some new way.

The following example demonstrates how to create a new shadow stack with
map_shadow_stack:
void *shstk = map_shadow_stack(adrr, stack_size, SHADOW_STACK_SET_TOKEN);

Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com>

---

v2:
 - Change syscall to take address like mmap() for CRIU's usage

v1:
 - New patch (replaces PROT_SHADOW_STACK).

 arch/x86/entry/syscalls/syscall_64.tbl |  1 +
 arch/x86/include/uapi/asm/mman.h       |  2 ++
 arch/x86/kernel/shstk.c                | 48 +++++++++++++++++++++-----
 include/linux/syscalls.h               |  1 +
 include/uapi/asm-generic/unistd.h      |  2 +-
 kernel/sys_ni.c                        |  1 +
 6 files changed, 46 insertions(+), 9 deletions(-)

diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
index c84d12608cd2..d9639e3e0a33 100644
--- a/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/arch/x86/entry/syscalls/syscall_64.tbl
@@ -372,6 +372,7 @@
 448	common	process_mrelease	sys_process_mrelease
 449	common	futex_waitv		sys_futex_waitv
 450	common	set_mempolicy_home_node	sys_set_mempolicy_home_node
+451	common	map_shadow_stack	sys_map_shadow_stack
 
 #
 # Due to a historical design error, certain syscalls are numbered differently
diff --git a/arch/x86/include/uapi/asm/mman.h b/arch/x86/include/uapi/asm/mman.h
index 775dbd3aff73..c9fc57c88fcc 100644
--- a/arch/x86/include/uapi/asm/mman.h
+++ b/arch/x86/include/uapi/asm/mman.h
@@ -12,6 +12,8 @@
 		((key) & 0x8 ? VM_PKEY_BIT3 : 0))
 #endif
 
+#define SHADOW_STACK_SET_TOKEN	0x1	/* Set up a restore token in the shadow stack */
+
 #include <asm-generic/mman.h>
 
 #endif /* _ASM_X86_MMAN_H */
diff --git a/arch/x86/kernel/shstk.c b/arch/x86/kernel/shstk.c
index 04442134aadd..873830d63adc 100644
--- a/arch/x86/kernel/shstk.c
+++ b/arch/x86/kernel/shstk.c
@@ -17,6 +17,7 @@
 #include <linux/compat.h>
 #include <linux/sizes.h>
 #include <linux/user.h>
+#include <linux/syscalls.h>
 #include <asm/msr.h>
 #include <asm/fpu/xstate.h>
 #include <asm/fpu/types.h>
@@ -62,24 +63,34 @@ static int create_rstor_token(unsigned long ssp, unsigned long *token_addr)
 	if (write_user_shstk_64((u64 __user *)addr, (u64)ssp))
 		return -EFAULT;
 
-	*token_addr = addr;
+	if (token_addr)
+		*token_addr = addr;
 
 	return 0;
 }
 
-static unsigned long alloc_shstk(unsigned long size)
+static unsigned long alloc_shstk(unsigned long addr, unsigned long size,
+				 unsigned long token_offset, bool set_res_tok)
 {
 	int flags = MAP_ANONYMOUS | MAP_PRIVATE;
 	struct mm_struct *mm = current->mm;
-	unsigned long addr, unused;
+	unsigned long mapped_addr, unused;
 
 	mmap_write_lock(mm);
-	addr = do_mmap(NULL, addr, size, PROT_READ, flags,
-		       VM_SHADOW_STACK | VM_WRITE, 0, &unused, NULL);
-
+	mapped_addr = do_mmap(NULL, addr, size, PROT_READ, flags,
+			      VM_SHADOW_STACK | VM_WRITE, 0, &unused, NULL);
 	mmap_write_unlock(mm);
 
-	return addr;
+	if (!set_res_tok || IS_ERR_VALUE(addr))
+		goto out;
+
+	if (create_rstor_token(mapped_addr + token_offset, NULL)) {
+		vm_munmap(mapped_addr, size);
+		return -EINVAL;
+	}
+
+out:
+	return mapped_addr;
 }
 
 static void unmap_shadow_stack(u64 base, u64 size)
@@ -122,7 +133,7 @@ int shstk_setup(void)
 		return -EOPNOTSUPP;
 
 	size = PAGE_ALIGN(min_t(unsigned long long, rlimit(RLIMIT_STACK), SZ_4G));
-	addr = alloc_shstk(size);
+	addr = alloc_shstk(0, size, size, false);
 	if (IS_ERR_VALUE(addr))
 		return PTR_ERR((void *)addr);
 
@@ -174,6 +185,7 @@ int shstk_alloc_thread_stack(struct task_struct *tsk, unsigned long clone_flags,
 
 
 	stack_size = PAGE_ALIGN(stack_size);
+	addr = alloc_shstk(0, stack_size, 0, false);
 	if (IS_ERR_VALUE(addr))
 		return PTR_ERR((void *)addr);
 
@@ -395,6 +407,26 @@ int shstk_disable(void)
 	return 0;
 }
 
+
+SYSCALL_DEFINE3(map_shadow_stack, unsigned long, addr, unsigned long, size, unsigned int, flags)
+{
+	unsigned long aligned_size;
+
+	if (!cpu_feature_enabled(X86_FEATURE_SHSTK))
+		return -ENOSYS;
+
+	/*
+	 * An overflow would result in attempting to write the restore token
+	 * to the wrong location. Not catastrophic, but just return the right
+	 * error code and block it.
+	 */
+	aligned_size = PAGE_ALIGN(size);
+	if (aligned_size < size)
+		return -EOVERFLOW;
+
+	return alloc_shstk(addr, aligned_size, size, flags & SHADOW_STACK_SET_TOKEN);
+}
+
 long cet_prctl(struct task_struct *task, int option, unsigned long features)
 {
 	if (option == ARCH_CET_LOCK) {
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index a34b0f9a9972..3ae05cbdea5b 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -1056,6 +1056,7 @@ asmlinkage long sys_memfd_secret(unsigned int flags);
 asmlinkage long sys_set_mempolicy_home_node(unsigned long start, unsigned long len,
 					    unsigned long home_node,
 					    unsigned long flags);
+asmlinkage long sys_map_shadow_stack(unsigned long addr, unsigned long size, unsigned int flags);
 
 /*
  * Architecture-specific system calls
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index 45fa180cc56a..b12940ec5926 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -887,7 +887,7 @@ __SYSCALL(__NR_futex_waitv, sys_futex_waitv)
 __SYSCALL(__NR_set_mempolicy_home_node, sys_set_mempolicy_home_node)
 
 #undef __NR_syscalls
-#define __NR_syscalls 451
+#define __NR_syscalls 452
 
 /*
  * 32 bit systems traditionally used different
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index 860b2dcf3ac4..cb9aebd34646 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -381,6 +381,7 @@ COND_SYSCALL(vm86old);
 COND_SYSCALL(modify_ldt);
 COND_SYSCALL(vm86);
 COND_SYSCALL(kexec_file_load);
+COND_SYSCALL(map_shadow_stack);
 
 /* s390 */
 COND_SYSCALL(s390_pci_mmio_read);
-- 
2.17.1



  parent reply	other threads:[~2022-09-29 22:30 UTC|newest]

Thread overview: 240+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-29 22:28 [PATCH v2 00/39] Shadowstacks for userspace Rick Edgecombe
2022-09-29 22:28 ` [PATCH v2 01/39] Documentation/x86: Add CET description Rick Edgecombe
2022-09-30  3:41   ` Bagas Sanjaya
2022-09-30 13:33     ` Jonathan Corbet
2022-09-30 13:41       ` Bagas Sanjaya
2022-10-03 16:56         ` Edgecombe, Rick P
2022-10-04  2:16           ` Bagas Sanjaya
2022-10-05  9:10           ` Peter Zijlstra
2022-10-05  9:25             ` Bagas Sanjaya
2022-10-05  9:46               ` Peter Zijlstra
2022-10-03 19:35     ` John Hubbard
2022-10-03 19:39       ` Dave Hansen
2022-10-04  2:13       ` Bagas Sanjaya
2022-10-03 17:18   ` Kees Cook
2022-10-03 19:46     ` Edgecombe, Rick P
2022-10-05  0:02   ` Andrew Cooper
2022-10-10 12:19   ` Florian Weimer
2022-10-10 16:44     ` Edgecombe, Rick P
2022-10-10 16:51       ` H.J. Lu
2022-10-12 12:29       ` Florian Weimer
2022-10-12 15:59         ` Dave Hansen
2022-10-12 16:54           ` Florian Weimer
2022-10-13 21:28         ` Edgecombe, Rick P
2022-10-13 22:15           ` H.J. Lu
2022-10-26 21:59           ` Edgecombe, Rick P
2022-09-29 22:28 ` [PATCH v2 02/39] x86/cet/shstk: Add Kconfig option for Shadow Stack Rick Edgecombe
2022-10-03 13:40   ` Kirill A . Shutemov
2022-10-03 19:53     ` Edgecombe, Rick P
2022-10-03 17:25   ` Kees Cook
2022-10-03 19:52     ` Edgecombe, Rick P
2022-10-03 19:42   ` Dave Hansen
2022-10-03 19:50     ` Edgecombe, Rick P
2022-10-12 20:04   ` Borislav Petkov
2022-10-13  0:31     ` Edgecombe, Rick P
2022-10-13  9:21       ` Borislav Petkov
2022-09-29 22:29 ` [PATCH v2 03/39] x86/cpufeatures: Add CPU feature flags for shadow stacks Rick Edgecombe
2022-10-03 17:26   ` Kees Cook
2022-10-14 16:20   ` Borislav Petkov
2022-10-14 19:35     ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 04/39] x86/cpufeatures: Enable CET CR4 bit for shadow stack Rick Edgecombe
2022-10-03 17:31   ` Kees Cook
2022-10-05  0:55   ` Andrew Cooper
2022-10-14 17:12   ` Borislav Petkov
2022-10-14 18:15     ` Edgecombe, Rick P
2022-10-14 19:44       ` Borislav Petkov
2022-09-29 22:29 ` [PATCH v2 05/39] x86/fpu/xstate: Introduce CET MSR and XSAVES supervisor states Rick Edgecombe
2022-10-03 17:40   ` Kees Cook
2022-10-15  9:46   ` Borislav Petkov
2022-10-17 18:57     ` Edgecombe, Rick P
2022-10-17 19:33       ` Borislav Petkov
2022-09-29 22:29 ` [PATCH v2 06/39] x86/fpu: Add helper for modifying xstate Rick Edgecombe
2022-10-03 17:48   ` Kees Cook
2022-10-03 20:05     ` Edgecombe, Rick P
2022-10-04  4:05       ` Kees Cook
2022-10-04 14:18       ` Dave Hansen
2022-10-04 16:13         ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 07/39] x86/cet: Add user control-protection fault handler Rick Edgecombe
2022-10-03 14:01   ` Kirill A . Shutemov
2022-10-03 18:12     ` Edgecombe, Rick P
2022-10-03 18:04   ` Kees Cook
2022-10-03 20:33     ` Edgecombe, Rick P
2022-10-03 22:51   ` Andy Lutomirski
2022-10-03 23:09     ` H. Peter Anvin
2022-10-03 23:11     ` Edgecombe, Rick P
2022-10-05  1:20   ` Andrew Cooper
2022-10-05 22:44     ` Edgecombe, Rick P
2022-10-05  9:39   ` Peter Zijlstra
2022-10-05 22:45     ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 08/39] x86/mm: Remove _PAGE_DIRTY from kernel RO pages Rick Edgecombe
2022-10-03 14:17   ` Kirill A . Shutemov
2022-10-05  1:31   ` Andrew Cooper
2022-10-05 11:16     ` Peter Zijlstra
2022-10-05 12:34       ` Andrew Cooper
2022-09-29 22:29 ` [PATCH v2 09/39] x86/mm: Move pmd_write(), pud_write() up in the file Rick Edgecombe
2022-10-03 18:06   ` Kees Cook
2022-09-29 22:29 ` [PATCH v2 10/39] x86/mm: Introduce _PAGE_COW Rick Edgecombe
2022-09-30 15:16   ` Jann Horn
2022-10-06 16:10     ` Edgecombe, Rick P
2022-10-03 16:26   ` Kirill A . Shutemov
2022-10-03 21:36     ` Edgecombe, Rick P
2022-10-03 21:54       ` Jann Horn
2022-10-03 22:14       ` Dave Hansen
2022-10-05  2:17   ` Andrew Cooper
2022-10-05 14:08     ` Dave Hansen
2022-10-05 23:06       ` Edgecombe, Rick P
2022-10-05 23:01     ` Edgecombe, Rick P
2022-10-05 11:33   ` Peter Zijlstra
2022-10-14  9:41   ` Peter Zijlstra
2022-10-14 15:52     ` Edgecombe, Rick P
2022-10-14  9:42   ` Peter Zijlstra
2022-10-14 18:06     ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 11/39] x86/mm: Update pte_modify for _PAGE_COW Rick Edgecombe
2022-09-29 22:29 ` [PATCH v2 12/39] x86/mm: Update ptep_set_wrprotect() and pmdp_set_wrprotect() for transition from _PAGE_DIRTY to _PAGE_COW Rick Edgecombe
2022-10-03 17:43   ` Kirill A . Shutemov
2022-10-03 18:11   ` Nadav Amit
2022-10-03 18:51     ` Dave Hansen
2022-10-03 22:28     ` Edgecombe, Rick P
2022-10-03 23:17       ` Nadav Amit
2022-10-03 23:20         ` Nadav Amit
2022-10-03 23:25           ` Nadav Amit
2022-10-03 23:38             ` Edgecombe, Rick P
2022-10-04  0:40               ` Nadav Amit
2022-09-29 22:29 ` [PATCH v2 13/39] mm: Move VM_UFFD_MINOR_BIT from 37 to 38 Rick Edgecombe
2022-10-03 18:11   ` Kees Cook
2022-10-03 18:24   ` Peter Xu
2022-09-29 22:29 ` [PATCH v2 14/39] mm: Introduce VM_SHADOW_STACK for shadow stack memory Rick Edgecombe
2022-10-03 17:47   ` Kirill A . Shutemov
2022-10-04  0:29     ` Edgecombe, Rick P
2022-10-03 18:17   ` Kees Cook
2022-09-29 22:29 ` [PATCH v2 15/39] x86/mm: Check Shadow Stack page fault errors Rick Edgecombe
2022-10-03 18:20   ` Kees Cook
2022-10-14 10:07   ` Peter Zijlstra
2022-10-14 15:51     ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 16/39] x86/mm: Update maybe_mkwrite() for shadow stack Rick Edgecombe
2022-10-03 18:22   ` Kees Cook
2022-10-03 23:53   ` Kirill A . Shutemov
2022-10-14 15:32   ` Peter Zijlstra
2022-10-14 15:45     ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 17/39] mm: Fixup places that call pte_mkwrite() directly Rick Edgecombe
2022-10-03 18:24   ` Kees Cook
2022-10-03 23:56   ` Kirill A . Shutemov
2022-10-04 16:15     ` Edgecombe, Rick P
2022-10-04  1:56   ` Nadav Amit
2022-10-04 16:21     ` Edgecombe, Rick P
2022-10-14 15:52   ` Peter Zijlstra
2022-10-14 15:56     ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 18/39] mm: Add guard pages around a shadow stack Rick Edgecombe
2022-10-03 18:30   ` Kees Cook
2022-10-05  2:30     ` Andrew Cooper
2022-10-10 12:33       ` Florian Weimer
2022-10-10 13:32         ` Andrew Cooper
2022-10-10 13:40           ` Florian Weimer
2022-10-10 13:56             ` Andrew Cooper
2022-09-29 22:29 ` [PATCH v2 19/39] mm/mmap: Add shadow stack pages to memory accounting Rick Edgecombe
2022-10-03 18:31   ` Kees Cook
2022-10-04  0:03   ` Kirill A . Shutemov
2022-10-04  0:32     ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 20/39] mm/mprotect: Exclude shadow stack from preserve_write Rick Edgecombe
2022-09-29 22:29 ` [PATCH v2 21/39] mm: Re-introduce vm_flags to do_mmap() Rick Edgecombe
2022-09-29 22:29 ` [PATCH v2 22/39] mm: Don't allow write GUPs to shadow stack memory Rick Edgecombe
2022-09-30 19:16   ` Dave Hansen
2022-09-30 20:30     ` Edgecombe, Rick P
2022-09-30 20:37       ` Dave Hansen
2022-09-30 23:00     ` Jann Horn
2022-09-30 23:02       ` Jann Horn
2022-09-30 23:04       ` Edgecombe, Rick P
2022-10-03 18:39   ` Kees Cook
2022-10-03 22:49     ` Andy Lutomirski
2022-10-04  4:21       ` Kees Cook
2022-09-29 22:29 ` [PATCH v2 23/39] x86: Introduce userspace API for CET enabling Rick Edgecombe
2022-10-03 19:01   ` Kees Cook
2022-10-03 22:51     ` Edgecombe, Rick P
2022-10-06 18:50       ` Mike Rapoport
2022-10-10 10:56   ` Florian Weimer
2022-10-10 16:28     ` Edgecombe, Rick P
2022-10-12 12:18       ` Florian Weimer
2022-10-12 17:30         ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 24/39] x86/cet/shstk: Add user-mode shadow stack support Rick Edgecombe
2022-10-03 19:43   ` Kees Cook
2022-10-03 20:04     ` Dave Hansen
2022-10-04  4:04       ` Kees Cook
2022-10-04 16:25         ` Edgecombe, Rick P
2022-10-04 10:17       ` David Laight
2022-10-04 19:32         ` Kees Cook
2022-10-05 13:32           ` David Laight
2022-10-20 21:29     ` Edgecombe, Rick P
2022-10-20 22:54       ` Kees Cook
2022-09-29 22:29 ` [PATCH v2 25/39] x86/cet/shstk: Handle thread shadow stack Rick Edgecombe
2022-10-03 10:36   ` Mike Rapoport
2022-10-03 16:57     ` Edgecombe, Rick P
2022-10-03 20:29   ` Kees Cook
2022-10-04 22:09     ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 26/39] x86/cet/shstk: Introduce routines modifying shstk Rick Edgecombe
2022-10-03 20:44   ` Kees Cook
2022-10-04 22:13     ` Edgecombe, Rick P
2022-10-05  2:43   ` Andrew Cooper
2022-10-05 22:47     ` Edgecombe, Rick P
2022-10-05 22:58       ` Andrew Cooper
2022-10-20 21:51         ` Edgecombe, Rick P
2022-09-29 22:29 ` [PATCH v2 27/39] x86/cet/shstk: Handle signals for shadow stack Rick Edgecombe
2022-10-03 20:52   ` Kees Cook
2022-10-20 22:08     ` Edgecombe, Rick P
2022-10-20 22:57       ` Kees Cook
2022-09-29 22:29 ` Rick Edgecombe [this message]
2022-10-03 22:23   ` [PATCH v2 28/39] x86/cet/shstk: Introduce map_shadow_stack syscall Kees Cook
2022-10-04 22:56     ` Edgecombe, Rick P
2022-10-04 23:16       ` H.J. Lu
2022-10-10 11:13   ` Florian Weimer
2022-10-10 14:19     ` Jason A. Donenfeld
2022-09-29 22:29 ` [PATCH v2 29/39] x86/cet/shstk: Support wrss for userspace Rick Edgecombe
2022-10-03 22:28   ` Kees Cook
2022-10-03 23:00     ` Andy Lutomirski
2022-10-04  4:37       ` Kees Cook
2022-10-06  0:38         ` Edgecombe, Rick P
2022-10-06  3:11           ` Kees Cook
2022-10-04  8:30     ` Mike Rapoport
2022-09-29 22:29 ` [PATCH v2 30/39] x86: Expose thread features status in /proc/$PID/arch_status Rick Edgecombe
2022-10-03 22:37   ` Kees Cook
2022-10-03 22:45     ` Andy Lutomirski
2022-10-04  4:18       ` Kees Cook
2022-09-29 22:29 ` [PATCH v2 31/39] x86/cet/shstk: Wire in CET interface Rick Edgecombe
2022-10-03 22:41   ` Kees Cook
2022-09-29 22:29 ` [PATCH v2 32/39] selftests/x86: Add shadow stack test Rick Edgecombe
2022-10-03 23:56   ` Kees Cook
2022-09-29 22:29 ` [PATCH v2 33/39] x86/cpufeatures: Limit shadow stack to Intel CPUs Rick Edgecombe
2022-10-03 23:57   ` Kees Cook
2022-10-04  0:09     ` Dave Hansen
2022-10-04  4:54       ` Kees Cook
2022-10-04 15:47         ` Nathan Chancellor
2022-10-04 19:43           ` John Allen
2022-10-04 20:34             ` Edgecombe, Rick P
2022-10-04 20:50               ` Nathan Chancellor
2022-10-04 21:17                 ` H. Peter Anvin
2022-10-04 23:24                   ` Edgecombe, Rick P
2022-11-03 17:39                     ` John Allen
2022-10-20 21:22                 ` Edgecombe, Rick P
2022-10-04  8:36       ` Mike Rapoport
2022-09-29 22:29 ` [OPTIONAL/CLEANUP v2 34/39] x86: Separate out x86_regset for 32 and 64 bit Rick Edgecombe
2022-09-29 22:29 ` [OPTIONAL/CLEANUP v2 35/39] x86: Improve formatting of user_regset arrays Rick Edgecombe
2022-09-29 22:29 ` [OPTIONAL/RFC v2 36/39] x86/fpu: Add helper for initing features Rick Edgecombe
2022-10-03 19:07   ` Chang S. Bae
2022-10-04 23:05     ` Edgecombe, Rick P
2022-09-29 22:29 ` [OPTIONAL/RFC v2 37/39] x86/cet: Add PTRACE interface for CET Rick Edgecombe
2022-10-03 23:59   ` Kees Cook
2022-10-04  8:44     ` Mike Rapoport
2022-10-04 19:24       ` Kees Cook
2022-09-29 22:29 ` [OPTIONAL/RFC v2 38/39] x86/cet/shstk: Add ARCH_CET_UNLOCK Rick Edgecombe
2022-10-04  0:00   ` Kees Cook
2022-09-29 22:29 ` [OPTIONAL/RFC v2 39/39] x86: Add alt shadow stack support Rick Edgecombe
2022-10-03 23:21   ` Andy Lutomirski
2022-10-04 16:12     ` Edgecombe, Rick P
2022-10-04 17:46       ` Andy Lutomirski
2022-10-04 18:04         ` Edgecombe, Rick P
2022-10-03 17:04 ` [PATCH v2 00/39] Shadowstacks for userspace Kees Cook
2022-10-03 17:25   ` Jann Horn
2022-10-04  5:01     ` Kees Cook
2022-10-04  9:57       ` David Laight
2022-10-04 19:28         ` Kees Cook
2022-10-03 18:33   ` Edgecombe, Rick P
2022-10-04  3:59     ` Kees Cook

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220929222936.14584-29-rick.p.edgecombe@intel.com \
    --to=rick.p.edgecombe@intel.com \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=bsingharora@gmail.com \
    --cc=corbet@lwn.net \
    --cc=dave.hansen@linux.intel.com \
    --cc=dethoma@microsoft.com \
    --cc=eranian@google.com \
    --cc=esyr@redhat.com \
    --cc=fweimer@redhat.com \
    --cc=gorcunov@gmail.com \
    --cc=hjl.tools@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jamorris@linux.microsoft.com \
    --cc=jannh@google.com \
    --cc=joao.moreira@intel.com \
    --cc=john.allen@amd.com \
    --cc=kcc@google.com \
    --cc=keescook@chromium.org \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=mike.kravetz@oracle.com \
    --cc=mingo@redhat.com \
    --cc=nadav.amit@gmail.com \
    --cc=oleg@redhat.com \
    --cc=pavel@ucw.cz \
    --cc=peterz@infradead.org \
    --cc=ravi.v.shankar@intel.com \
    --cc=rdunlap@infradead.org \
    --cc=rppt@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=weijiang.yang@intel.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox