From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753709AbcKPOTl (ORCPT ); Wed, 16 Nov 2016 09:19:41 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:52246 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752810AbcKPOT0 (ORCPT ); Wed, 16 Nov 2016 09:19:26 -0500 From: Arnd Bergmann To: Linus Walleij Cc: Arnd Bergmann , Maxime Ripard , Chen-Yu Tsai , linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] pinctrl: sunxi: fix theoretical uninitialized variable access Date: Wed, 16 Nov 2016 15:18:18 +0100 Message-Id: <20161116141841.2030776-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:l3EmxQoWRKFJuqqXb9/f4YZIqAAeH7LZjeE7kjbWoVAIsKl8SPD pKq2yvanp7bwsnOAsWAy4w8v7e+OiCYiORlFryz3dLsQAZEhONFjRSR2MtZ7jUQt+h/p+F4 1TChL9z6c+awqCONYkRMMlUBzYuVuyFlECYAqjPsXnERbOfga5IgBxiyfph8YxFBkODwSub ROUKkA0lhYey4XHuwb4LA== X-UI-Out-Filterresults: notjunk:1;V01:K0:ecOrMZZAo5o=:6/pnibH6eX2te+1R4rrpPa FILLKUXcj0B4NSt9UbiZVC4kbf+woFlGEszrxgjivCYJ5fX3QSKvQLsnfwysAIDMIqjS7/vwD a/e3XGwwvUXc6bEz/n6KuV4YPwcRqrM/Mub/MBXDg1Hx5hw0rDEWjFxzrB+3Y8tGzu8akcQ0W ZshTjm2qaPdw6zH57jADtlNFDNmbro+0/fzTUXAL5s7YCDG8sDtqf1Ts+Exdh78srkmwo3i9B uVIqeEf3jh0d4Wb/4asrT7JtNjk73f5YoQuLDPClMCQLEXluxFzCOZxmgmVBq2oPqNGHO7cfu YCqHv78qclcK5fwxIYUBRyDLqCh3yCrcDqYwG0nc2/+D9V9LBtzf067I9uITXWP7bz/IpgYNl ZSf3ItPmcizBqf/o1qOWyhpUTv7hfESlGrFPX54I0DkoLUCq1CsGZLG6Nn7HVE8SSK+G2/DtA tYvvHmh6TZ+/D7d9/NMZVjstFqsOqlAiiAdUS3P7DqXc0kj8d4yuMJBkQhm9R0P4suzAfgUnG SqbS27FsyFS+xRxtdLEDbBJuXl4EFVKS8mJjwyNgPoK9+ltmRpjJ3MoGwWtIOXDyu/SgbW3es RBhPQcfa0q06NKHvNIXo6UN45iYxL9YpQepUuxZalfdZnubalctSb7oZ5a5ectCUxHZx91DPM vKaZmegoR3JKLYR/eB09eY1jm7wzsK9Uo4/WymY3DZBrkJlAfx1rmHlIqcvQlaeaEgIfnqCgC btMOEeK0B6bRQB5jEP8bl4gHuPrBZNAhcFNKXZuHoB7fb0LOEvDBvX6nkI3VhOzIuzHrFb1yt rbLx+2g Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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: 7c926492d38a ("pinctrl: sunxi: Add support for interrupt debouncing") Signed-off-by: Arnd Bergmann --- drivers/pinctrl/sunxi/pinctrl-sunxi.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c index 2339d4718b4d..6b7953da4228 100644 --- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c +++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c @@ -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) { unsigned long clock = clk_get_rate(clk); - unsigned int best_diff = ~0, best_div; + unsigned int best_diff, best_div; 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)); if (cur_diff < best_diff) { -- 2.9.0