diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 85f867a76f1d..0be3e8603f8b 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -20,6 +20,7 @@ #include #include #include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -61,3 +62,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sysrq_crash); diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c index a8e39b2cdd55..28459e9cc8c5 100644 --- a/drivers/tty/sysrq.c +++ b/drivers/tty/sysrq.c @@ -54,6 +54,8 @@ #include #include +#include + /* Whether we react on sysrq keys or just ignore them */ static int __read_mostly sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE; static bool __read_mostly sysrq_always_enabled; @@ -150,6 +152,8 @@ static void sysrq_handle_crash(int key) /* release the RCU read lock before crashing */ rcu_read_unlock(); + trace_android_vh_sysrq_crash(current); + panic("sysrq triggered crash\n"); } static const struct sysrq_key_op sysrq_crash_op = { diff --git a/include/trace/hooks/sysrqcrash.h b/include/trace/hooks/sysrqcrash.h new file mode 100644 index 000000000000..e5d9102ba4e1 --- /dev/null +++ b/include/trace/hooks/sysrqcrash.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM sysrqcrash +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_SYSRQCRASH_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_SYSRQCRASH_H +#include +#include +/* + * Following tracepoints are not exported in tracefs and provide a + * mechanism for vendor modules to hook and extend functionality + */ +#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS) +DECLARE_HOOK(android_vh_sysrq_crash, + TP_PROTO(void *data), + TP_ARGS(data)); +#else +#define trace_android_vh_sysrq_crash(data) +#endif + +#endif /* _TRACE_HOOK_SYSRQCRASH_H */ +/* This part must be outside protection */ +#include