arm64: set POR_EL0 for kernel threads
authorJoey Gouly <joey.gouly@arm.com>
Tue, 1 Oct 2024 13:36:17 +0000 (14:36 +0100)
committerWill Deacon <will@kernel.org>
Mon, 14 Oct 2024 16:22:47 +0000 (17:22 +0100)
Restrict kernel threads to only have RWX overlays for pkey 0.  This matches
what arch/x86 does, by defaulting to a restrictive PKRU.

Signed-off-by: Joey Gouly <joey.gouly@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Kevin Brodsky <Kevin.Brodsky@arm.com>
Link: https://lore.kernel.org/r/20241001133618.1547996-2-joey.gouly@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/process.c

index 0540653..3e7c8c8 100644 (file)
@@ -412,6 +412,9 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)
 
                p->thread.cpu_context.x19 = (unsigned long)args->fn;
                p->thread.cpu_context.x20 = (unsigned long)args->fn_arg;
+
+               if (system_supports_poe())
+                       p->thread.por_el0 = POR_EL0_INIT;
        }
        p->thread.cpu_context.pc = (unsigned long)ret_from_fork;
        p->thread.cpu_context.sp = (unsigned long)childregs;