Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cpufreq: Remove CPU hotplug callbacks only if they were initialized

Since CPU hotplug callbacks are requested for CPUHP_AP_ONLINE_DYN state,
successful callback initialization will result in cpuhp_setup_state()
returning a positive value. Therefore acpi_cpufreq_online being zero
indicates that callbacks have not been installed.

This means that acpi_cpufreq_boost_exit() should only remove them if
acpi_cpufreq_online is positive. Trying to call
cpuhp_remove_state_nocalls(0) will cause a BUG().

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Boris Ostrovsky and committed by
Rafael J. Wysocki
2a8fa123 1358e038

+1 -1
+1 -1
drivers/cpufreq/acpi-cpufreq.c
··· 930 930 931 931 static void acpi_cpufreq_boost_exit(void) 932 932 { 933 - if (acpi_cpufreq_online >= 0) 933 + if (acpi_cpufreq_online > 0) 934 934 cpuhp_remove_state_nocalls(acpi_cpufreq_online); 935 935 } 936 936