cpufreq: cpufreq_register_driver() should return -ENODEV if init fails
authorDavid Arcari <darcari@redhat.com>
Fri, 26 May 2017 15:37:31 +0000 (11:37 -0400)
committerSasha Levin <alexander.levin@verizon.com>
Thu, 8 Jun 2017 10:42:00 +0000 (06:42 -0400)
[ Upstream commit 6c77003677d5f1ce15f26d24360cb66c0bc07bb3 ]

For a driver that does not set the CPUFREQ_STICKY flag, if all of the
->init() calls fail, cpufreq_register_driver() should return an error.
This will prevent the driver from loading.

Fixes: ce1bcfe94db8 (cpufreq: check cpufreq_policy_list instead of scanning policies for all CPUs)
Cc: 4.0+ <stable@vger.kernel.org> # 4.0+
Signed-off-by: David Arcari <darcari@redhat.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
drivers/cpufreq/cpufreq.c

index 5412412c55801d776b9cd02172d9dbd22ecebe63..ead829afcb6aee1957b20a00efe06ac34548199b 100644 (file)
@@ -2462,6 +2462,7 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
        if (!(cpufreq_driver->flags & CPUFREQ_STICKY) &&
            list_empty(&cpufreq_policy_list)) {
                /* if all ->init() calls failed, unregister */
+               ret = -ENODEV;
                pr_debug("%s: No CPU initialized for driver %s\n", __func__,
                         driver_data->name);
                goto err_if_unreg;