Message ID | 20241008-v5_user_cfi_series-v6-6-60d9fe073f37@rivosinc.com |
---|---|
State | New |
Headers | show |
Series | riscv control-flow integrity for usermode | expand |
On Wed, Oct 09, 2024 at 12:28:03PM +0100, Mark Brown wrote: >On Tue, Oct 08, 2024 at 03:36:48PM -0700, Deepak Gupta wrote: > >> riscv will need an implementation for exit_thread to clean up shadow stack >> when thread exits. If current thread had shadow stack enabled, shadow >> stack is allocated by default for any new thread. > >FWIW both arm64 and x86 do this via deactivate_mm(). ISTR there's some >case where exit_thread() doesn't quite do the right thing but I can't >remember the specifics right now, possibly the vfork() case but ICBW? >In any case like Rick said factoring out the common patterns would be >good, keeping things aligned would support that. Now getting back to collecting feedback and sending another version. Yeah I found what you meant. https://lore.kernel.org/all/20230908203655.543765-1-rick.p.edgecombe@intel.com/#t Seems like an issue for riscv as well. Will fix it. This particular issue screaming out loud for converging flows as well.
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 22dc5ea4196c..808ea66b9537 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -182,6 +182,7 @@ config RISCV select HAVE_SAMPLE_FTRACE_DIRECT_MULTI select HAVE_STACKPROTECTOR select HAVE_SYSCALL_TRACEPOINTS + select HAVE_EXIT_THREAD select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU select IRQ_DOMAIN select IRQ_FORCED_THREADING diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index e3142d8a6e28..1f2574fb2edb 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -201,6 +201,11 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) return 0; } +void exit_thread(struct task_struct *tsk) +{ + +} + int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) { unsigned long clone_flags = args->flags;