From: Axel Lin Date: Mon, 26 Jul 2010 07:34:14 +0000 (+0800) Subject: ab3100: fix off-by-one value range checking for voltage selector X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=979da89a9c230381ca55ea0764428a5d42a01e7f;p=openwrt%2Fstaging%2Fblogic.git ab3100: fix off-by-one value range checking for voltage selector We use voltage selector as an array index for typ_voltages. Thus the valid range for voltage selector should be 0..voltages_len-1. Signed-off-by: Axel Lin Acked-by: Mark Brown Acked-by: Linus Walleij Signed-off-by: Liam Girdwood --- diff --git a/drivers/regulator/ab3100.c b/drivers/regulator/ab3100.c index 7b14a67bdca2..11790990277a 100644 --- a/drivers/regulator/ab3100.c +++ b/drivers/regulator/ab3100.c @@ -286,7 +286,7 @@ static int ab3100_list_voltage_regulator(struct regulator_dev *reg, { struct ab3100_regulator *abreg = reg->reg_data; - if (selector > abreg->voltages_len) + if (selector >= abreg->voltages_len) return -EINVAL; return abreg->typ_voltages[selector]; } @@ -318,7 +318,7 @@ static int ab3100_get_voltage_regulator(struct regulator_dev *reg) regval &= 0xE0; regval >>= 5; - if (regval > abreg->voltages_len) { + if (regval >= abreg->voltages_len) { dev_err(®->dev, "regulator register %02x contains an illegal voltage setting\n", abreg->regreg);