Message ID | 1576486038-9899-13-git-send-email-amit.kachhap@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: return address signing | expand |
On Mon, Dec 16, 2019 at 02:17:14PM +0530, Amit Daniel Kachhap wrote: > diff --git a/arch/arm64/kernel/sleep.S b/arch/arm64/kernel/sleep.S > index 7b2f2e6..a6e9460 100644 > --- a/arch/arm64/kernel/sleep.S > +++ b/arch/arm64/kernel/sleep.S > @@ -2,6 +2,7 @@ > #include <linux/errno.h> > #include <linux/linkage.h> > #include <asm/asm-offsets.h> > +#include <asm/asm_pointer_auth.h> > #include <asm/assembler.h> > #include <asm/smp.h> > > @@ -139,6 +140,11 @@ ENTRY(_cpu_resume) > bl kasan_unpoison_task_stack_below > #endif > > +#ifdef CONFIG_ARM64_PTR_AUTH > + get_current_task x1 > + ptrauth_keys_install_kernel x1, x2, x3, x4 > +#endif We should initialise the keys earlier since kasan_unpoison_task_stack_below() is a C function.
diff --git a/arch/arm64/kernel/sleep.S b/arch/arm64/kernel/sleep.S index 7b2f2e6..a6e9460 100644 --- a/arch/arm64/kernel/sleep.S +++ b/arch/arm64/kernel/sleep.S @@ -2,6 +2,7 @@ #include <linux/errno.h> #include <linux/linkage.h> #include <asm/asm-offsets.h> +#include <asm/asm_pointer_auth.h> #include <asm/assembler.h> #include <asm/smp.h> @@ -139,6 +140,11 @@ ENTRY(_cpu_resume) bl kasan_unpoison_task_stack_below #endif +#ifdef CONFIG_ARM64_PTR_AUTH + get_current_task x1 + ptrauth_keys_install_kernel x1, x2, x3, x4 +#endif + ldp x19, x20, [x29, #16] ldp x21, x22, [x29, #32] ldp x23, x24, [x29, #48]
This patch restores the kernel keys from current task during cpu resume after the mmu is turned on and ptrauth is enabled. Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com> --- Changes since last version: * None. arch/arm64/kernel/sleep.S | 6 ++++++ 1 file changed, 6 insertions(+)