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:
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user