void do_cp15instr(unsigned long esr, struct pt_regs *regs);
 void do_el0_svc(struct pt_regs *regs);
 void do_el0_svc_compat(struct pt_regs *regs);
-void do_ptrauth_fault(struct pt_regs *regs, unsigned long esr);
+void do_el0_fpac(struct pt_regs *regs, unsigned long esr);
+void do_el1_fpac(struct pt_regs *regs, unsigned long esr);
 void do_serror(struct pt_regs *regs, unsigned long esr);
 void do_notify_resume(struct pt_regs *regs, unsigned long thread_flags);
 
 
 {
        enter_from_kernel_mode(regs);
        local_daif_inherit(regs);
-       do_ptrauth_fault(regs, esr);
+       do_el1_fpac(regs, esr);
        local_daif_mask();
        exit_to_kernel_mode(regs);
 }
 {
        enter_from_user_mode(regs);
        local_daif_restore(DAIF_PROCCTX);
-       do_ptrauth_fault(regs, esr);
+       do_el0_fpac(regs, esr);
        exit_to_user_mode(regs);
 }
 
 
 }
 NOKPROBE_SYMBOL(do_bti);
 
-void do_ptrauth_fault(struct pt_regs *regs, unsigned long esr)
+void do_el0_fpac(struct pt_regs *regs, unsigned long esr)
+{
+       force_signal_inject(SIGILL, ILL_ILLOPN, regs->pc, esr);
+}
+
+void do_el1_fpac(struct pt_regs *regs, unsigned long esr)
 {
        /*
-        * Unexpected FPAC exception or pointer authentication failure in
-        * the kernel: kill the task before it does any more harm.
+        * Unexpected FPAC exception in the kernel: kill the task before it
+        * does any more harm.
         */
-       BUG_ON(!user_mode(regs));
-       force_signal_inject(SIGILL, ILL_ILLOPN, regs->pc, esr);
+       die("Oops - FPAC", regs, esr);
 }
-NOKPROBE_SYMBOL(do_ptrauth_fault);
+NOKPROBE_SYMBOL(do_el1_fpac)
 
 #define __user_cache_maint(insn, address, res)                 \
        if (address >= TASK_SIZE_MAX) {                         \