summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Ian King <colin.king@canonical.com>2016-02-24 18:32:50 +0100
committerLinus Walleij <linus.walleij@linaro.org>2016-03-07 04:28:05 +0100
commit5e9a207547079a23c3d4ecb4bad050ba8acc3f59 (patch)
tree5863e547ca63d319385f351b0c5d134d85f05826
parentMerge branch 'sh-pfc-for-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/g... (diff)
downloadlinux-5e9a207547079a23c3d4ecb4bad050ba8acc3f59.tar.xz
linux-5e9a207547079a23c3d4ecb4bad050ba8acc3f59.zip
pinctrl: lpc18xx: ensure ngroups is initialized at correct place
The initialization of ngroups is occurring at the end of the first iteration of the outer loop, which means that the assignment pins[ngroups++] = i is potentially indexing into a region outside of array pins because ngroups is not initialized. Instead, initialize ngroups in the inner loop before the first inner loop iteration. Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by: Joachim Eastwood <manabian@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r--drivers/pinctrl/pinctrl-lpc18xx.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/pinctrl/pinctrl-lpc18xx.c b/drivers/pinctrl/pinctrl-lpc18xx.c
index f0bebbe0682b..ed1cfa7e43dd 100644
--- a/drivers/pinctrl/pinctrl-lpc18xx.c
+++ b/drivers/pinctrl/pinctrl-lpc18xx.c
@@ -1170,9 +1170,8 @@ static int lpc18xx_create_group_func_map(struct device *dev,
u16 pins[ARRAY_SIZE(lpc18xx_pins)];
int func, ngroups, i;
- for (func = 0; func < FUNC_MAX; ngroups = 0, func++) {
-
- for (i = 0; i < ARRAY_SIZE(lpc18xx_pins); i++) {
+ for (func = 0; func < FUNC_MAX; func++) {
+ for (ngroups = 0, i = 0; i < ARRAY_SIZE(lpc18xx_pins); i++) {
if (lpc18xx_valid_pin_function(i, func))
pins[ngroups++] = i;
}