diff options
Diffstat (limited to 'arch/powerpc/include/asm/book3s/64/kup.h')
-rw-r--r-- | arch/powerpc/include/asm/book3s/64/kup.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/book3s/64/kup.h b/arch/powerpc/include/asm/book3s/64/kup.h index fa671391e931..f41f6f468002 100644 --- a/arch/powerpc/include/asm/book3s/64/kup.h +++ b/arch/powerpc/include/asm/book3s/64/kup.h @@ -177,6 +177,27 @@ DECLARE_STATIC_KEY_FALSE(uaccess_flush_key); #include <asm/mmu.h> #include <asm/ptrace.h> +/* + * For kernel thread that doesn't have thread.regs return + * default AMR/IAMR values. + */ +static inline u64 current_thread_amr(void) +{ + if (current->thread.regs) + return current->thread.regs->amr; + return AMR_KUAP_BLOCKED; +} + +static inline u64 current_thread_iamr(void) +{ + if (current->thread.regs) + return current->thread.regs->iamr; + return AMR_KUEP_BLOCKED; +} +#endif /* CONFIG_PPC_PKEY */ + +#ifdef CONFIG_PPC_KUAP + static inline void kuap_user_restore(struct pt_regs *regs) { if (!mmu_has_feature(MMU_FTR_PKEY)) |