Commit d8a22212 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Linus Walleij

pinctrl: sunxi: fix theoretical uninitialized variable access

gcc warns about a  way that it could use an uninitialized variable:

drivers/pinctrl/sunxi/pinctrl-sunxi.c: In function 'sunxi_pinctrl_init':
drivers/pinctrl/sunxi/pinctrl-sunxi.c:1191:8: error: 'best_div' may be used uninitialized in this function [-Werror=maybe-uninitialized]

This cannot really happen except if 'freq' is UINT_MAX and 'clock' is
zero, and both of these are forbidden. To shut up the warning anyway,
this changes the logic to initialize the return code to the first
divider value before looking at the others.

Fixes: 7c926492 ("pinctrl: sunxi: Add support for interrupt debouncing")
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent d278dae8
...@@ -1125,10 +1125,13 @@ static int sunxi_pinctrl_build_state(struct platform_device *pdev) ...@@ -1125,10 +1125,13 @@ static int sunxi_pinctrl_build_state(struct platform_device *pdev)
static int sunxi_pinctrl_get_debounce_div(struct clk *clk, int freq, int *diff) static int sunxi_pinctrl_get_debounce_div(struct clk *clk, int freq, int *diff)
{ {
unsigned long clock = clk_get_rate(clk); unsigned long clock = clk_get_rate(clk);
unsigned int best_diff = ~0, best_div; unsigned int best_diff, best_div;
int i; int i;
for (i = 0; i < 8; i++) { best_diff = abs(freq - clock);
best_div = 0;
for (i = 1; i < 8; i++) {
int cur_diff = abs(freq - (clock >> i)); int cur_diff = abs(freq - (clock >> i));
if (cur_diff < best_diff) { if (cur_diff < best_diff) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment