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

cpufreq: cpufreq-dt: avoid uninitialized variable warnings:

gcc warns quite a bit about values returned from allocate_resources()
in cpufreq-dt.c:

cpufreq-dt.c: In function 'cpufreq_init':
cpufreq-dt.c:327:6: error: 'cpu_dev' may be used uninitialized in this function [-Werror=maybe-uninitialized]
cpufreq-dt.c:197:17: note: 'cpu_dev' was declared here
cpufreq-dt.c:376:2: error: 'cpu_clk' may be used uninitialized in this function [-Werror=maybe-uninitialized]
cpufreq-dt.c:199:14: note: 'cpu_clk' was declared here
cpufreq-dt.c: In function 'dt_cpufreq_probe':
cpufreq-dt.c:461:2: error: 'cpu_clk' may be used uninitialized in this function [-Werror=maybe-uninitialized]
cpufreq-dt.c:447:14: note: 'cpu_clk' was declared here

The problem is that it's slightly hard for gcc to follow return
codes across PTR_ERR() calls.

This patch uses explicit assignments to the "ret" variable to make
it easier for gcc to verify that the code is actually correct,
without the need to add a bogus initialization.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Arnd Bergmann and committed by
Rafael J. Wysocki
b331bc20 fb2a24a1

+7 -8
+7 -8
drivers/cpufreq/cpufreq-dt.c
··· 142 142 143 143 try_again: 144 144 cpu_reg = regulator_get_optional(cpu_dev, reg); 145 - if (IS_ERR(cpu_reg)) { 145 + ret = PTR_ERR_OR_ZERO(cpu_reg); 146 + if (ret) { 146 147 /* 147 148 * If cpu's regulator supply node is present, but regulator is 148 149 * not yet registered, we should try defering probe. 149 150 */ 150 - if (PTR_ERR(cpu_reg) == -EPROBE_DEFER) { 151 + if (ret == -EPROBE_DEFER) { 151 152 dev_dbg(cpu_dev, "cpu%d regulator not ready, retry\n", 152 153 cpu); 153 - return -EPROBE_DEFER; 154 + return ret; 154 155 } 155 156 156 157 /* Try with "cpu-supply" */ ··· 160 159 goto try_again; 161 160 } 162 161 163 - dev_dbg(cpu_dev, "no regulator for cpu%d: %ld\n", 164 - cpu, PTR_ERR(cpu_reg)); 162 + dev_dbg(cpu_dev, "no regulator for cpu%d: %d\n", cpu, ret); 165 163 } 166 164 167 165 cpu_clk = clk_get(cpu_dev, NULL); 168 - if (IS_ERR(cpu_clk)) { 166 + ret = PTR_ERR_OR_ZERO(cpu_clk); 167 + if (ret) { 169 168 /* put regulator */ 170 169 if (!IS_ERR(cpu_reg)) 171 170 regulator_put(cpu_reg); 172 - 173 - ret = PTR_ERR(cpu_clk); 174 171 175 172 /* 176 173 * If cpu's clk node is present, but clock is not yet