From 573c7f061d100537bf32bdb47fe3ebd45e93aa55 Mon Sep 17 00:00:00 2001 From: Elliot Berman Date: Thu, 28 Jul 2022 09:38:28 -0700 Subject: [PATCH] ANDROID: Guard hooks with their CONFIG_ options ANDROID_VENDOR_HOOKS has implicit dependencies on the subsystems which it hooks into whenever it directly uses an "internal" header for that system. For instance, drivers/scsi/ufs/ufshcd.h doesn't compile unless CONFIG_SCSI_UFSHCD is enabled: In file included from drivers/android/vendor_hooks.c:41: In file included from include/trace/hooks/ufshcd.h:21: include/../drivers/scsi/ufs/ufshcd.h:675:38: error: field has incomplete type 'struct devfreq_simple_ondemand_data' struct devfreq_simple_ondemand_data ondemand_data; ^ include/../drivers/scsi/ufs/ufshcd.h:675:9: note: forward declaration of 'struct devfreq_simple_ondemand_data' struct devfreq_simple_ondemand_data ondemand_data; To avoid these implicit dependencies, guard any "internal" header includes with the respective CONFIG_ options when applicable. If the CONFIG_ option is not enabled, then the forward-declared structs are used. This is acceptable because those hooks would not have been called anyway since the underlying subsytem wasn't enabled. Fixes: commit 1590a0e8e123 ("ANDROID: GKI: include more type definitions in vendor hooks") Bug: 240404657 Change-Id: I43d19136fdb1b534e80630067f5db92c379adc67 Signed-off-by: Elliot Berman --- include/trace/hooks/binder.h | 11 ++++++++--- include/trace/hooks/block.h | 2 +- include/trace/hooks/logbuf.h | 2 +- include/trace/hooks/mmc_core.h | 10 +++++++--- include/trace/hooks/psi.h | 2 +- include/trace/hooks/typec.h | 3 ++- include/trace/hooks/ufshcd.h | 2 +- 7 files changed, 21 insertions(+), 11 deletions(-) diff --git a/include/trace/hooks/binder.h b/include/trace/hooks/binder.h index 2b9e7e09a13d..5147261de15c 100644 --- a/include/trace/hooks/binder.h +++ b/include/trace/hooks/binder.h @@ -11,19 +11,23 @@ * Following tracepoints are not exported in tracefs and provide a * mechanism for vendor modules to hook and extend functionality */ -#ifdef __GENKSYMS__ +#if defined(__GENKSYMS__) || !IS_ENABLED(CONFIG_ANDROID_BINDER_IPC) struct binder_alloc; struct binder_proc; struct binder_thread; struct binder_transaction; -struct task_struct; -struct seq_file; struct binder_transaction_data; #else /* struct binder_alloc */ #include <../drivers/android/binder_alloc.h> /* struct binder_proc, struct binder_thread, struct binder_transaction */ #include <../drivers/android/binder_internal.h> +#endif + +#ifdef __GENKSYMS__ +struct task_struct; +struct seq_file; +#else /* struct task_struct */ #include /* struct seq_file */ @@ -31,6 +35,7 @@ struct binder_transaction_data; /* struct binder_transaction_data */ #include #endif /* __GENKSYMS__ */ + DECLARE_HOOK(android_vh_binder_transaction_init, TP_PROTO(struct binder_transaction *t), TP_ARGS(t)); diff --git a/include/trace/hooks/block.h b/include/trace/hooks/block.h index 964fff355602..a5a7ac70a2ee 100644 --- a/include/trace/hooks/block.h +++ b/include/trace/hooks/block.h @@ -10,7 +10,7 @@ #include #include -#ifdef __GENKSYMS__ +#if defined(__GENKSYMS__) || !defined(CONFIG_BLOCK) struct blk_mq_tags; struct blk_mq_alloc_data; struct blk_mq_tag_set; diff --git a/include/trace/hooks/logbuf.h b/include/trace/hooks/logbuf.h index 6aeb10a4661b..3794192554cb 100644 --- a/include/trace/hooks/logbuf.h +++ b/include/trace/hooks/logbuf.h @@ -10,7 +10,7 @@ #include #include -#ifdef __GENKSYMS__ +#if defined(__GENKSYMS__) || !IS_ENABLED(CONFIG_PRINTK) struct printk_record; struct printk_ringbuffer; #else diff --git a/include/trace/hooks/mmc_core.h b/include/trace/hooks/mmc_core.h index b4b93b2f4c9e..eb012e9c8147 100644 --- a/include/trace/hooks/mmc_core.h +++ b/include/trace/hooks/mmc_core.h @@ -10,13 +10,17 @@ #include #include -#ifdef __GENKSYMS__ +#if defined(__GENKSYMS__) || !IS_ENABLED(CONFIG_MMC_SDHCI) struct sdhci_host; -struct mmc_card; -struct mmc_host; #else /* struct sdhci_host */ #include <../drivers/mmc/host/sdhci.h> +#endif + +#ifdef __GENKSYMS__ +struct mmc_card; +struct mmc_host; +#else /* struct mmc_card */ #include /* struct mmc_host */ diff --git a/include/trace/hooks/psi.h b/include/trace/hooks/psi.h index 3842118af3c3..3200b639ad3f 100644 --- a/include/trace/hooks/psi.h +++ b/include/trace/hooks/psi.h @@ -12,7 +12,7 @@ #if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS) -#ifdef __GENKSYMS__ +#if defined(__GENKSYMS__) || !defined(CONFIG_PSI) struct psi_group; struct psi_trigger; #else diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h index db06fb8c30e9..825cb37bc8b2 100644 --- a/include/trace/hooks/typec.h +++ b/include/trace/hooks/typec.h @@ -6,12 +6,13 @@ #define _TRACE_HOOK_TYPEC_H #include #include +#include #include /* * Following tracepoints are not exported in tracefs and provide a * mechanism for vendor modules to hook and extend functionality */ -#ifdef __GENKSYMS__ +#if defined(__GENKSYMS__) || !IS_ENABLED(CONFIG_TYPEC_TCPCI) struct tcpci_data; #else /* struct tcpci_data */ diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h index 8483dc966c6c..906e02740f3f 100644 --- a/include/trace/hooks/ufshcd.h +++ b/include/trace/hooks/ufshcd.h @@ -10,7 +10,7 @@ * Following tracepoints are not exported in tracefs and provide a * mechanism for vendor modules to hook and extend functionality */ -#ifdef __GENKSYMS__ +#if defined(__GENKSYMS__) || !IS_ENABLED(CONFIG_SCSI_UFSHCD) struct ufs_hba; struct ufshcd_lrb; struct uic_command;