From 0d8928ed6ee38f00f3595e1f3b623de0d99c311d Mon Sep 17 00:00:00 2001 From: Sangmoon Kim Date: Thu, 8 Oct 2020 10:42:06 +0900 Subject: [PATCH] ANDROID: sysrq: add vendor hook for sysrq crash information - Add the hook to provide additional information of sysrq crash. Bug: 170234110 Signed-off-by: Sangmoon Kim Change-Id: Ib8f14eaa639b2ef959e911d611515868ff9f193d (cherry picked from commit 32b242337266a3b8e170b0ddc4bec478d5cf1f94) --- drivers/android/vendor_hooks.c | 2 ++ drivers/tty/sysrq.c | 4 ++++ include/trace/hooks/sysrqcrash.h | 24 ++++++++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 include/trace/hooks/sysrqcrash.h 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