+++ /dev/null
-From stable+bounces-276791-greg=kroah.com@vger.kernel.org Thu Jul 16 19:51:29 2026
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 16 Jul 2026 13:45:54 -0400
-Subject: cpufreq: Make cpufreq_driver->exit() return void
-To: stable@vger.kernel.org
-Cc: Lizhe <sensor1010@163.com>, Viresh Kumar <viresh.kumar@linaro.org>, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>, Sudeep Holla <sudeep.holla@arm.com>, Mario Limonciello <mario.limonciello@amd.com>, Florian Fainelli <florian.fainelli@broadcom.com>, "Rafael J. Wysocki" <rafael@kernel.org>, Kevin Hilman <khilman@baylibre.com>, Sasha Levin <sashal@kernel.org>
-Message-ID: <20260716174555.787913-2-sashal@kernel.org>
-
-From: Lizhe <sensor1010@163.com>
-
-[ Upstream commit b4b1ddc9dfe997a5f492fa3a36487f8e7a5de30d ]
-
-The cpufreq core doesn't check the return type of the exit() callback
-and there is not much the core can do on failures at that point. Just
-drop the returned value and make it return void.
-
-Signed-off-by: Lizhe <sensor1010@163.com>
-[ Viresh: Reworked the patches to fix all missing changes together. ]
-Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
-Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> # Mediatek
-Acked-by: Sudeep Holla <sudeep.holla@arm.com> # scpi, scmi, vexpress
-Acked-by: Mario Limonciello <mario.limonciello@amd.com> # amd
-Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> # bmips
-Acked-by: Rafael J. Wysocki <rafael@kernel.org>
-Acked-by: Kevin Hilman <khilman@baylibre.com> # omap
-Stable-dep-of: bcb8889c4981 ("cpufreq: qcom-cpufreq-hw: Fix possible double free")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/cpufreq/acpi-cpufreq.c | 4 +---
- drivers/cpufreq/amd-pstate.c | 7 ++-----
- drivers/cpufreq/apple-soc-cpufreq.c | 4 +---
- drivers/cpufreq/bmips-cpufreq.c | 4 +---
- drivers/cpufreq/cppc_cpufreq.c | 3 +--
- drivers/cpufreq/cpufreq-dt.c | 3 +--
- drivers/cpufreq/e_powersaver.c | 3 +--
- drivers/cpufreq/intel_pstate.c | 8 +++-----
- drivers/cpufreq/mediatek-cpufreq-hw.c | 4 +---
- drivers/cpufreq/mediatek-cpufreq.c | 4 +---
- drivers/cpufreq/omap-cpufreq.c | 3 +--
- drivers/cpufreq/pasemi-cpufreq.c | 6 ++----
- drivers/cpufreq/powernow-k6.c | 5 ++---
- drivers/cpufreq/powernow-k7.c | 3 +--
- drivers/cpufreq/powernow-k8.c | 6 ++----
- drivers/cpufreq/powernv-cpufreq.c | 4 +---
- drivers/cpufreq/ppc_cbe_cpufreq.c | 3 +--
- drivers/cpufreq/qcom-cpufreq-hw.c | 4 +---
- drivers/cpufreq/qoriq-cpufreq.c | 4 +---
- drivers/cpufreq/scmi-cpufreq.c | 4 +---
- drivers/cpufreq/scpi-cpufreq.c | 4 +---
- drivers/cpufreq/sh-cpufreq.c | 4 +---
- drivers/cpufreq/sparc-us2e-cpufreq.c | 3 +--
- drivers/cpufreq/sparc-us3-cpufreq.c | 3 +--
- drivers/cpufreq/speedstep-centrino.c | 10 +++-------
- drivers/cpufreq/tegra194-cpufreq.c | 4 +---
- drivers/cpufreq/vexpress-spc-cpufreq.c | 5 ++---
- include/linux/cpufreq.h | 2 +-
- 28 files changed, 37 insertions(+), 84 deletions(-)
-
---- a/drivers/cpufreq/acpi-cpufreq.c
-+++ b/drivers/cpufreq/acpi-cpufreq.c
-@@ -926,7 +926,7 @@ err_free:
- return result;
- }
-
--static int acpi_cpufreq_cpu_exit(struct cpufreq_policy *policy)
-+static void acpi_cpufreq_cpu_exit(struct cpufreq_policy *policy)
- {
- struct acpi_cpufreq_data *data = policy->driver_data;
-
-@@ -939,8 +939,6 @@ static int acpi_cpufreq_cpu_exit(struct
- free_cpumask_var(data->freqdomain_cpus);
- kfree(policy->freq_table);
- kfree(data);
--
-- return 0;
- }
-
- static int acpi_cpufreq_resume(struct cpufreq_policy *policy)
---- a/drivers/cpufreq/amd-pstate.c
-+++ b/drivers/cpufreq/amd-pstate.c
-@@ -900,7 +900,7 @@ free_cpudata1:
- return ret;
- }
-
--static int amd_pstate_cpu_exit(struct cpufreq_policy *policy)
-+static void amd_pstate_cpu_exit(struct cpufreq_policy *policy)
- {
- struct amd_cpudata *cpudata = policy->driver_data;
-
-@@ -908,8 +908,6 @@ static int amd_pstate_cpu_exit(struct cp
- freq_qos_remove_request(&cpudata->req[0]);
- policy->fast_switch_possible = false;
- kfree(cpudata);
--
-- return 0;
- }
-
- static int amd_pstate_cpu_resume(struct cpufreq_policy *policy)
-@@ -1353,7 +1351,7 @@ free_cpudata1:
- return ret;
- }
-
--static int amd_pstate_epp_cpu_exit(struct cpufreq_policy *policy)
-+static void amd_pstate_epp_cpu_exit(struct cpufreq_policy *policy)
- {
- struct amd_cpudata *cpudata = policy->driver_data;
-
-@@ -1363,7 +1361,6 @@ static int amd_pstate_epp_cpu_exit(struc
- }
-
- pr_debug("CPU %d exiting\n", policy->cpu);
-- return 0;
- }
-
- static void amd_pstate_epp_update_limit(struct cpufreq_policy *policy)
---- a/drivers/cpufreq/apple-soc-cpufreq.c
-+++ b/drivers/cpufreq/apple-soc-cpufreq.c
-@@ -311,7 +311,7 @@ out_iounmap:
- return ret;
- }
-
--static int apple_soc_cpufreq_exit(struct cpufreq_policy *policy)
-+static void apple_soc_cpufreq_exit(struct cpufreq_policy *policy)
- {
- struct apple_cpu_priv *priv = policy->driver_data;
-
-@@ -319,8 +319,6 @@ static int apple_soc_cpufreq_exit(struct
- dev_pm_opp_remove_all_dynamic(priv->cpu_dev);
- iounmap(priv->reg_base);
- kfree(priv);
--
-- return 0;
- }
-
- static struct cpufreq_driver apple_soc_cpufreq_driver = {
---- a/drivers/cpufreq/bmips-cpufreq.c
-+++ b/drivers/cpufreq/bmips-cpufreq.c
-@@ -121,11 +121,9 @@ static int bmips_cpufreq_target_index(st
- return 0;
- }
-
--static int bmips_cpufreq_exit(struct cpufreq_policy *policy)
-+static void bmips_cpufreq_exit(struct cpufreq_policy *policy)
- {
- kfree(policy->freq_table);
--
-- return 0;
- }
-
- static int bmips_cpufreq_init(struct cpufreq_policy *policy)
---- a/drivers/cpufreq/cppc_cpufreq.c
-+++ b/drivers/cpufreq/cppc_cpufreq.c
-@@ -707,7 +707,7 @@ out:
- return ret;
- }
-
--static int cppc_cpufreq_cpu_exit(struct cpufreq_policy *policy)
-+static void cppc_cpufreq_cpu_exit(struct cpufreq_policy *policy)
- {
- struct cppc_cpudata *cpu_data = policy->driver_data;
- struct cppc_perf_caps *caps = &cpu_data->perf_caps;
-@@ -724,7 +724,6 @@ static int cppc_cpufreq_cpu_exit(struct
- caps->lowest_perf, cpu, ret);
-
- cppc_cpufreq_put_cpu_data(policy);
-- return 0;
- }
-
- static inline u64 get_delta(u64 t1, u64 t0)
---- a/drivers/cpufreq/cpufreq-dt.c
-+++ b/drivers/cpufreq/cpufreq-dt.c
-@@ -166,10 +166,9 @@ static int cpufreq_offline(struct cpufre
- return 0;
- }
-
--static int cpufreq_exit(struct cpufreq_policy *policy)
-+static void cpufreq_exit(struct cpufreq_policy *policy)
- {
- clk_put(policy->clk);
-- return 0;
- }
-
- static struct cpufreq_driver dt_cpufreq_driver = {
---- a/drivers/cpufreq/e_powersaver.c
-+++ b/drivers/cpufreq/e_powersaver.c
-@@ -360,14 +360,13 @@ static int eps_cpu_init(struct cpufreq_p
- return 0;
- }
-
--static int eps_cpu_exit(struct cpufreq_policy *policy)
-+static void eps_cpu_exit(struct cpufreq_policy *policy)
- {
- unsigned int cpu = policy->cpu;
-
- /* Bye */
- kfree(eps_cpu[cpu]);
- eps_cpu[cpu] = NULL;
-- return 0;
- }
-
- static struct cpufreq_driver eps_driver = {
---- a/drivers/cpufreq/intel_pstate.c
-+++ b/drivers/cpufreq/intel_pstate.c
-@@ -2705,13 +2705,11 @@ static int intel_pstate_cpu_offline(stru
- return intel_cpufreq_cpu_offline(policy);
- }
-
--static int intel_pstate_cpu_exit(struct cpufreq_policy *policy)
-+static void intel_pstate_cpu_exit(struct cpufreq_policy *policy)
- {
- pr_debug("CPU %d exiting\n", policy->cpu);
-
- policy->fast_switch_possible = false;
--
-- return 0;
- }
-
- static int __intel_pstate_cpu_init(struct cpufreq_policy *policy)
-@@ -3041,7 +3039,7 @@ pstate_exit:
- return ret;
- }
-
--static int intel_cpufreq_cpu_exit(struct cpufreq_policy *policy)
-+static void intel_cpufreq_cpu_exit(struct cpufreq_policy *policy)
- {
- struct freq_qos_request *req;
-
-@@ -3051,7 +3049,7 @@ static int intel_cpufreq_cpu_exit(struct
- freq_qos_remove_request(req);
- kfree(req);
-
-- return intel_pstate_cpu_exit(policy);
-+ intel_pstate_cpu_exit(policy);
- }
-
- static int intel_cpufreq_suspend(struct cpufreq_policy *policy)
---- a/drivers/cpufreq/mediatek-cpufreq-hw.c
-+++ b/drivers/cpufreq/mediatek-cpufreq-hw.c
-@@ -260,7 +260,7 @@ static int mtk_cpufreq_hw_cpu_init(struc
- return 0;
- }
-
--static int mtk_cpufreq_hw_cpu_exit(struct cpufreq_policy *policy)
-+static void mtk_cpufreq_hw_cpu_exit(struct cpufreq_policy *policy)
- {
- struct mtk_cpufreq_data *data = policy->driver_data;
- struct resource *res = data->res;
-@@ -270,8 +270,6 @@ static int mtk_cpufreq_hw_cpu_exit(struc
- writel_relaxed(0x0, data->reg_bases[REG_FREQ_ENABLE]);
- iounmap(base);
- release_mem_region(res->start, resource_size(res));
--
-- return 0;
- }
-
- static void mtk_cpufreq_register_em(struct cpufreq_policy *policy)
---- a/drivers/cpufreq/mediatek-cpufreq.c
-+++ b/drivers/cpufreq/mediatek-cpufreq.c
-@@ -599,13 +599,11 @@ static int mtk_cpufreq_init(struct cpufr
- return 0;
- }
-
--static int mtk_cpufreq_exit(struct cpufreq_policy *policy)
-+static void mtk_cpufreq_exit(struct cpufreq_policy *policy)
- {
- struct mtk_cpu_dvfs_info *info = policy->driver_data;
-
- dev_pm_opp_free_cpufreq_table(info->cpu_dev, &policy->freq_table);
--
-- return 0;
- }
-
- static struct cpufreq_driver mtk_cpufreq_driver = {
---- a/drivers/cpufreq/omap-cpufreq.c
-+++ b/drivers/cpufreq/omap-cpufreq.c
-@@ -135,11 +135,10 @@ static int omap_cpu_init(struct cpufreq_
- return 0;
- }
-
--static int omap_cpu_exit(struct cpufreq_policy *policy)
-+static void omap_cpu_exit(struct cpufreq_policy *policy)
- {
- freq_table_free();
- clk_put(policy->clk);
-- return 0;
- }
-
- static struct cpufreq_driver omap_driver = {
---- a/drivers/cpufreq/pasemi-cpufreq.c
-+++ b/drivers/cpufreq/pasemi-cpufreq.c
-@@ -204,21 +204,19 @@ out:
- return err;
- }
-
--static int pas_cpufreq_cpu_exit(struct cpufreq_policy *policy)
-+static void pas_cpufreq_cpu_exit(struct cpufreq_policy *policy)
- {
- /*
- * We don't support CPU hotplug. Don't unmap after the system
- * has already made it to a running state.
- */
- if (system_state >= SYSTEM_RUNNING)
-- return 0;
-+ return;
-
- if (sdcasr_mapbase)
- iounmap(sdcasr_mapbase);
- if (sdcpwr_mapbase)
- iounmap(sdcpwr_mapbase);
--
-- return 0;
- }
-
- static int pas_cpufreq_target(struct cpufreq_policy *policy,
---- a/drivers/cpufreq/powernow-k6.c
-+++ b/drivers/cpufreq/powernow-k6.c
-@@ -219,7 +219,7 @@ have_busfreq:
- }
-
-
--static int powernow_k6_cpu_exit(struct cpufreq_policy *policy)
-+static void powernow_k6_cpu_exit(struct cpufreq_policy *policy)
- {
- unsigned int i;
-
-@@ -234,10 +234,9 @@ static int powernow_k6_cpu_exit(struct c
- cpufreq_freq_transition_begin(policy, &freqs);
- powernow_k6_target(policy, i);
- cpufreq_freq_transition_end(policy, &freqs, 0);
-- break;
-+ return;
- }
- }
-- return 0;
- }
-
- static unsigned int powernow_k6_get(unsigned int cpu)
---- a/drivers/cpufreq/powernow-k7.c
-+++ b/drivers/cpufreq/powernow-k7.c
-@@ -644,7 +644,7 @@ static int powernow_cpu_init(struct cpuf
- return 0;
- }
-
--static int powernow_cpu_exit(struct cpufreq_policy *policy)
-+static void powernow_cpu_exit(struct cpufreq_policy *policy)
- {
- #ifdef CONFIG_X86_POWERNOW_K7_ACPI
- if (acpi_processor_perf) {
-@@ -655,7 +655,6 @@ static int powernow_cpu_exit(struct cpuf
- #endif
-
- kfree(powernow_table);
-- return 0;
- }
-
- static struct cpufreq_driver powernow_driver = {
---- a/drivers/cpufreq/powernow-k8.c
-+++ b/drivers/cpufreq/powernow-k8.c
-@@ -1089,13 +1089,13 @@ err_out:
- return -ENODEV;
- }
-
--static int powernowk8_cpu_exit(struct cpufreq_policy *pol)
-+static void powernowk8_cpu_exit(struct cpufreq_policy *pol)
- {
- struct powernow_k8_data *data = per_cpu(powernow_data, pol->cpu);
- int cpu;
-
- if (!data)
-- return -EINVAL;
-+ return;
-
- powernow_k8_cpu_exit_acpi(data);
-
-@@ -1104,8 +1104,6 @@ static int powernowk8_cpu_exit(struct cp
- /* pol->cpus will be empty here, use related_cpus instead. */
- for_each_cpu(cpu, pol->related_cpus)
- per_cpu(powernow_data, cpu) = NULL;
--
-- return 0;
- }
-
- static void query_values_on_cpu(void *_err)
---- a/drivers/cpufreq/powernv-cpufreq.c
-+++ b/drivers/cpufreq/powernv-cpufreq.c
-@@ -874,7 +874,7 @@ static int powernv_cpufreq_cpu_init(stru
- return 0;
- }
-
--static int powernv_cpufreq_cpu_exit(struct cpufreq_policy *policy)
-+static void powernv_cpufreq_cpu_exit(struct cpufreq_policy *policy)
- {
- struct powernv_smp_call_data freq_data;
- struct global_pstate_info *gpstates = policy->driver_data;
-@@ -886,8 +886,6 @@ static int powernv_cpufreq_cpu_exit(stru
- del_timer_sync(&gpstates->timer);
-
- kfree(policy->driver_data);
--
-- return 0;
- }
-
- static int powernv_cpufreq_reboot_notifier(struct notifier_block *nb,
---- a/drivers/cpufreq/ppc_cbe_cpufreq.c
-+++ b/drivers/cpufreq/ppc_cbe_cpufreq.c
-@@ -113,10 +113,9 @@ static int cbe_cpufreq_cpu_init(struct c
- return 0;
- }
-
--static int cbe_cpufreq_cpu_exit(struct cpufreq_policy *policy)
-+static void cbe_cpufreq_cpu_exit(struct cpufreq_policy *policy)
- {
- cbe_cpufreq_pmi_policy_exit(policy);
-- return 0;
- }
-
- static int cbe_cpufreq_target(struct cpufreq_policy *policy,
---- a/drivers/cpufreq/qcom-cpufreq-hw.c
-+++ b/drivers/cpufreq/qcom-cpufreq-hw.c
-@@ -574,7 +574,7 @@ static int qcom_cpufreq_hw_cpu_init(stru
- return qcom_cpufreq_hw_lmh_init(policy, index);
- }
-
--static int qcom_cpufreq_hw_cpu_exit(struct cpufreq_policy *policy)
-+static void qcom_cpufreq_hw_cpu_exit(struct cpufreq_policy *policy)
- {
- struct device *cpu_dev = get_cpu_device(policy->cpu);
- struct qcom_cpufreq_data *data = policy->driver_data;
-@@ -584,8 +584,6 @@ static int qcom_cpufreq_hw_cpu_exit(stru
- qcom_cpufreq_hw_lmh_exit(data);
- kfree(policy->freq_table);
- kfree(data);
--
-- return 0;
- }
-
- static void qcom_cpufreq_ready(struct cpufreq_policy *policy)
---- a/drivers/cpufreq/qoriq-cpufreq.c
-+++ b/drivers/cpufreq/qoriq-cpufreq.c
-@@ -225,7 +225,7 @@ err_np:
- return -ENODEV;
- }
-
--static int qoriq_cpufreq_cpu_exit(struct cpufreq_policy *policy)
-+static void qoriq_cpufreq_cpu_exit(struct cpufreq_policy *policy)
- {
- struct cpu_data *data = policy->driver_data;
-
-@@ -233,8 +233,6 @@ static int qoriq_cpufreq_cpu_exit(struct
- kfree(data->table);
- kfree(data);
- policy->driver_data = NULL;
--
-- return 0;
- }
-
- static int qoriq_cpufreq_target(struct cpufreq_policy *policy,
---- a/drivers/cpufreq/scmi-cpufreq.c
-+++ b/drivers/cpufreq/scmi-cpufreq.c
-@@ -247,7 +247,7 @@ out_free_priv:
- return ret;
- }
-
--static int scmi_cpufreq_exit(struct cpufreq_policy *policy)
-+static void scmi_cpufreq_exit(struct cpufreq_policy *policy)
- {
- struct scmi_data *priv = policy->driver_data;
-
-@@ -255,8 +255,6 @@ static int scmi_cpufreq_exit(struct cpuf
- dev_pm_opp_remove_all_dynamic(priv->cpu_dev);
- free_cpumask_var(priv->opp_shared_cpus);
- kfree(priv);
--
-- return 0;
- }
-
- static void scmi_cpufreq_register_em(struct cpufreq_policy *policy)
---- a/drivers/cpufreq/scpi-cpufreq.c
-+++ b/drivers/cpufreq/scpi-cpufreq.c
-@@ -175,7 +175,7 @@ out_free_opp:
- return ret;
- }
-
--static int scpi_cpufreq_exit(struct cpufreq_policy *policy)
-+static void scpi_cpufreq_exit(struct cpufreq_policy *policy)
- {
- struct scpi_data *priv = policy->driver_data;
-
-@@ -183,8 +183,6 @@ static int scpi_cpufreq_exit(struct cpuf
- dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table);
- dev_pm_opp_remove_all_dynamic(priv->cpu_dev);
- kfree(priv);
--
-- return 0;
- }
-
- static struct cpufreq_driver scpi_cpufreq_driver = {
---- a/drivers/cpufreq/sh-cpufreq.c
-+++ b/drivers/cpufreq/sh-cpufreq.c
-@@ -135,14 +135,12 @@ static int sh_cpufreq_cpu_init(struct cp
- return 0;
- }
-
--static int sh_cpufreq_cpu_exit(struct cpufreq_policy *policy)
-+static void sh_cpufreq_cpu_exit(struct cpufreq_policy *policy)
- {
- unsigned int cpu = policy->cpu;
- struct clk *cpuclk = &per_cpu(sh_cpuclk, cpu);
-
- clk_put(cpuclk);
--
-- return 0;
- }
-
- static struct cpufreq_driver sh_cpufreq_driver = {
---- a/drivers/cpufreq/sparc-us2e-cpufreq.c
-+++ b/drivers/cpufreq/sparc-us2e-cpufreq.c
-@@ -296,10 +296,9 @@ static int us2e_freq_cpu_init(struct cpu
- return 0;
- }
-
--static int us2e_freq_cpu_exit(struct cpufreq_policy *policy)
-+static void us2e_freq_cpu_exit(struct cpufreq_policy *policy)
- {
- us2e_freq_target(policy, 0);
-- return 0;
- }
-
- static struct cpufreq_driver cpufreq_us2e_driver = {
---- a/drivers/cpufreq/sparc-us3-cpufreq.c
-+++ b/drivers/cpufreq/sparc-us3-cpufreq.c
-@@ -140,10 +140,9 @@ static int us3_freq_cpu_init(struct cpuf
- return 0;
- }
-
--static int us3_freq_cpu_exit(struct cpufreq_policy *policy)
-+static void us3_freq_cpu_exit(struct cpufreq_policy *policy)
- {
- us3_freq_target(policy, 0);
-- return 0;
- }
-
- static struct cpufreq_driver cpufreq_us3_driver = {
---- a/drivers/cpufreq/speedstep-centrino.c
-+++ b/drivers/cpufreq/speedstep-centrino.c
-@@ -400,16 +400,12 @@ static int centrino_cpu_init(struct cpuf
- return 0;
- }
-
--static int centrino_cpu_exit(struct cpufreq_policy *policy)
-+static void centrino_cpu_exit(struct cpufreq_policy *policy)
- {
- unsigned int cpu = policy->cpu;
-
-- if (!per_cpu(centrino_model, cpu))
-- return -ENODEV;
--
-- per_cpu(centrino_model, cpu) = NULL;
--
-- return 0;
-+ if (per_cpu(centrino_model, cpu))
-+ per_cpu(centrino_model, cpu) = NULL;
- }
-
- /**
---- a/drivers/cpufreq/tegra194-cpufreq.c
-+++ b/drivers/cpufreq/tegra194-cpufreq.c
-@@ -526,14 +526,12 @@ static int tegra194_cpufreq_offline(stru
- return 0;
- }
-
--static int tegra194_cpufreq_exit(struct cpufreq_policy *policy)
-+static void tegra194_cpufreq_exit(struct cpufreq_policy *policy)
- {
- struct device *cpu_dev = get_cpu_device(policy->cpu);
-
- dev_pm_opp_remove_all_dynamic(cpu_dev);
- dev_pm_opp_of_cpumask_remove_table(policy->related_cpus);
--
-- return 0;
- }
-
- static int tegra194_cpufreq_set_target(struct cpufreq_policy *policy,
---- a/drivers/cpufreq/vexpress-spc-cpufreq.c
-+++ b/drivers/cpufreq/vexpress-spc-cpufreq.c
-@@ -447,7 +447,7 @@ static int ve_spc_cpufreq_init(struct cp
- return 0;
- }
-
--static int ve_spc_cpufreq_exit(struct cpufreq_policy *policy)
-+static void ve_spc_cpufreq_exit(struct cpufreq_policy *policy)
- {
- struct device *cpu_dev;
-
-@@ -455,11 +455,10 @@ static int ve_spc_cpufreq_exit(struct cp
- if (!cpu_dev) {
- pr_err("%s: failed to get cpu%d device\n", __func__,
- policy->cpu);
-- return -ENODEV;
-+ return;
- }
-
- put_cluster_clk_and_freq_table(cpu_dev, policy->related_cpus);
-- return 0;
- }
-
- static struct cpufreq_driver ve_spc_cpufreq_driver = {
---- a/include/linux/cpufreq.h
-+++ b/include/linux/cpufreq.h
-@@ -388,7 +388,7 @@ struct cpufreq_driver {
-
- int (*online)(struct cpufreq_policy *policy);
- int (*offline)(struct cpufreq_policy *policy);
-- int (*exit)(struct cpufreq_policy *policy);
-+ void (*exit)(struct cpufreq_policy *policy);
- int (*suspend)(struct cpufreq_policy *policy);
- int (*resume)(struct cpufreq_policy *policy);
-