From 949edf7539b60058cf2da98f24db2b6d4d89eaa0 Mon Sep 17 00:00:00 2001 From: Todd Kjos Date: Fri, 13 May 2022 10:47:30 -0700 Subject: [PATCH] ANDROID: Fix suspicious RCU usage warning The hooks added in the suspend path can be called in a state where RCU locking is not safe. Change the hooks to restricted hooks which are safe in this context. Bug: 232468327 Fixes: ace93ca5effc ("ANDROID: GKI: psci: add hook to check if cpu is allowed to power off") Signed-off-by: Todd Kjos Change-Id: I5b887d34ca05e995030ef0c8f39488d932c52770 --- android/abi_gki_aarch64_unisoc | 12 ++++++------ drivers/android/vendor_hooks.c | 4 ++-- drivers/firmware/psci/psci.c | 4 ++-- include/trace/hooks/psci.h | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index 8eb4656083bad..1c3f018f669ef 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -1180,8 +1180,8 @@ __traceiter_android_vh_mmc_check_status __traceiter_android_vh_modify_thermal_request_freq __traceiter_android_vh_modify_thermal_target_freq - __traceiter_android_vh_psci_cpu_suspend - __traceiter_android_vh_psci_tos_resident_on + __traceiter_android_rvh_psci_cpu_suspend + __traceiter_android_rvh_psci_tos_resident_on __traceiter_android_vh_scheduler_tick __traceiter_android_vh_set_wake_flags __traceiter_android_vh_thermal_power_cap @@ -1250,8 +1250,8 @@ __tracepoint_android_vh_mmc_check_status __tracepoint_android_vh_modify_thermal_request_freq __tracepoint_android_vh_modify_thermal_target_freq - __tracepoint_android_vh_psci_cpu_suspend - __tracepoint_android_vh_psci_tos_resident_on + __tracepoint_android_rvh_psci_cpu_suspend + __tracepoint_android_rvh_psci_tos_resident_on __tracepoint_android_vh_scheduler_tick __tracepoint_android_vh_set_wake_flags __tracepoint_android_vh_thermal_power_cap @@ -1541,8 +1541,8 @@ __traceiter_android_vh_printk_ext_header __traceiter_android_rvh_report_bug __tracepoint_android_vh_dma_buf_release - __tracepoint_android_vh_psci_tos_resident_on - __tracepoint_android_vh_psci_cpu_suspend + __tracepoint_android_rvh_psci_tos_resident_on + __tracepoint_android_rvh_psci_cpu_suspend __tracepoint_android_vh_regmap_update __tracepoint_android_vh_usb_new_device_added __traceiter_android_rvh_tk_based_time_sync diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 8ffa2fbe7c3d0..e35d4cab67626 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -289,8 +289,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_audio_usb_offload_disconnect); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_atomic_remove_fb); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_drm_atomic_check_modeset); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_thermal_zone_device); -EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psci_tos_resident_on); -EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psci_cpu_suspend); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_psci_tos_resident_on); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_psci_cpu_suspend); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_usb_new_device_added); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_force_compatible_pre); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_force_compatible_post); diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c index b41cacaaf9613..f305751316434 100644 --- a/drivers/firmware/psci/psci.c +++ b/drivers/firmware/psci/psci.c @@ -55,7 +55,7 @@ bool psci_tos_resident_on(int cpu) { bool resident = false; - trace_android_vh_psci_tos_resident_on(cpu, &resident); + trace_android_rvh_psci_tos_resident_on(cpu, &resident); if (resident) return resident; @@ -178,7 +178,7 @@ static int __psci_cpu_suspend(u32 fn, u32 state, unsigned long entry_point) int err; bool deny = false; - trace_android_vh_psci_cpu_suspend(state, &deny); + trace_android_rvh_psci_cpu_suspend(state, &deny); if (deny) return -EPERM; diff --git a/include/trace/hooks/psci.h b/include/trace/hooks/psci.h index 23090d9d2ef91..97d0fb1469a5e 100644 --- a/include/trace/hooks/psci.h +++ b/include/trace/hooks/psci.h @@ -10,13 +10,13 @@ #include -DECLARE_HOOK(android_vh_psci_tos_resident_on, +DECLARE_RESTRICTED_HOOK(android_rvh_psci_tos_resident_on, TP_PROTO(int cpu, bool *resident), - TP_ARGS(cpu, resident)); + TP_ARGS(cpu, resident), 1); -DECLARE_HOOK(android_vh_psci_cpu_suspend, +DECLARE_RESTRICTED_HOOK(android_rvh_psci_cpu_suspend, TP_PROTO(u32 state, bool *deny), - TP_ARGS(state, deny)); + TP_ARGS(state, deny), 1); /* macro versions of hooks are no longer required */