__AARCH64_INSN_FUNCS(exception,        0xFF000000, 0xD4000000)
 __AARCH64_INSN_FUNCS(hint,     0xFFFFF01F, 0xD503201F)
 __AARCH64_INSN_FUNCS(br,       0xFFFFFC1F, 0xD61F0000)
+__AARCH64_INSN_FUNCS(br_auth,  0xFEFFF800, 0xD61F0800)
 __AARCH64_INSN_FUNCS(blr,      0xFFFFFC1F, 0xD63F0000)
+__AARCH64_INSN_FUNCS(blr_auth, 0xFEFFF800, 0xD63F0800)
 __AARCH64_INSN_FUNCS(ret,      0xFFFFFC1F, 0xD65F0000)
+__AARCH64_INSN_FUNCS(ret_auth, 0xFFFFFBFF, 0xD65F0BFF)
 __AARCH64_INSN_FUNCS(eret,     0xFFFFFFFF, 0xD69F03E0)
+__AARCH64_INSN_FUNCS(eret_auth,        0xFFFFFBFF, 0xD69F0BFF)
 __AARCH64_INSN_FUNCS(mrs,      0xFFF00000, 0xD5300000)
 __AARCH64_INSN_FUNCS(msr_imm,  0xFFF8F01F, 0xD500401F)
 __AARCH64_INSN_FUNCS(msr_reg,  0xFFF00000, 0xD5100000)
 
 
 bool __kprobes aarch64_insn_is_branch(u32 insn)
 {
-       /* b, bl, cb*, tb*, b.cond, br, blr */
+       /* b, bl, cb*, tb*, ret*, b.cond, br*, blr* */
 
        return aarch64_insn_is_b(insn) ||
                aarch64_insn_is_bl(insn) ||
                aarch64_insn_is_tbz(insn) ||
                aarch64_insn_is_tbnz(insn) ||
                aarch64_insn_is_ret(insn) ||
+               aarch64_insn_is_ret_auth(insn) ||
                aarch64_insn_is_br(insn) ||
+               aarch64_insn_is_br_auth(insn) ||
                aarch64_insn_is_blr(insn) ||
+               aarch64_insn_is_blr_auth(insn) ||
                aarch64_insn_is_bcond(insn);
 }
 
 
                    aarch64_insn_is_msr_imm(insn) ||
                    aarch64_insn_is_msr_reg(insn) ||
                    aarch64_insn_is_exception(insn) ||
-                   aarch64_insn_is_eret(insn))
+                   aarch64_insn_is_eret(insn) ||
+                   aarch64_insn_is_eret_auth(insn))
                        return false;
 
                /*