ANDROID: arm64: add vendor hooks for bti and pauth fault

Add hooks to gather data of unusual aborts and summarize it with
other information.

Bug: 203187389

Signed-off-by: Sangmoon Kim <sangmoon.kim@samsung.com>
Change-Id: I37b3047e72f64dc210d3d3bffe5ee207daeba8d6
This commit is contained in:
Sangmoon Kim
2021-10-15 20:45:13 +09:00
parent 129e04dc19
commit 06d074249f
3 changed files with 14 additions and 0 deletions

View File

@@ -414,6 +414,7 @@ NOKPROBE_SYMBOL(do_undefinstr);
void do_bti(struct pt_regs *regs) void do_bti(struct pt_regs *regs)
{ {
trace_android_rvh_do_bti(regs, user_mode(regs));
BUG_ON(!user_mode(regs)); BUG_ON(!user_mode(regs));
force_signal_inject(SIGILL, ILL_ILLOPC, regs->pc, 0); force_signal_inject(SIGILL, ILL_ILLOPC, regs->pc, 0);
} }
@@ -425,6 +426,7 @@ void do_ptrauth_fault(struct pt_regs *regs, unsigned int esr)
* Unexpected FPAC exception or pointer authentication failure in * Unexpected FPAC exception or pointer authentication failure in
* the kernel: kill the task before it does any more harm. * the kernel: kill the task before it does any more harm.
*/ */
trace_android_rvh_do_ptrauth_fault(regs, esr, user_mode(regs));
BUG_ON(!user_mode(regs)); BUG_ON(!user_mode(regs));
force_signal_inject(SIGILL, ILL_ILLOPN, regs->pc, esr); force_signal_inject(SIGILL, ILL_ILLOPN, regs->pc, esr);
} }

View File

@@ -243,6 +243,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_mutex_list_add);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_unlock_slowpath); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_unlock_slowpath);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake_finish);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_undefinstr); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_undefinstr);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_bti);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_ptrauth_fault);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_bad_mode); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_bad_mode);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_arm64_serror_panic); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_arm64_serror_panic);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_selinux_avc_insert); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_selinux_avc_insert);

View File

@@ -17,6 +17,16 @@ DECLARE_RESTRICTED_HOOK(android_rvh_do_undefinstr,
TP_ARGS(regs, user), TP_ARGS(regs, user),
TP_CONDITION(!user)); TP_CONDITION(!user));
DECLARE_RESTRICTED_HOOK(android_rvh_do_bti,
TP_PROTO(struct pt_regs *regs, bool user),
TP_ARGS(regs, user),
TP_CONDITION(!user));
DECLARE_RESTRICTED_HOOK(android_rvh_do_ptrauth_fault,
TP_PROTO(struct pt_regs *regs, unsigned int esr, bool user),
TP_ARGS(regs, esr, user),
TP_CONDITION(!user));
DECLARE_RESTRICTED_HOOK(android_rvh_bad_mode, DECLARE_RESTRICTED_HOOK(android_rvh_bad_mode,
TP_PROTO(struct pt_regs *regs, unsigned int esr, int reason), TP_PROTO(struct pt_regs *regs, unsigned int esr, int reason),
TP_ARGS(regs, reason, esr), 1); TP_ARGS(regs, reason, esr), 1);