2010-02-03 19:12:47

by Roel Kluin

[permalink] [raw]
Subject: [PATCH] MX1/MX2: -EINVAL overwritten in second iteration in mxc_gpio_setup_multiple_pins()

Due to the `ret = gpio_request()' below in the loop, the initial -EINVAL value
of ret is overwritten.

Signed-off-by: Roel Kluin <[email protected]>
---
Not 100% sure this is needed, please review. One more question: is it ok
to return 0 when count is 0 (and nothing is done)?

diff --git a/arch/arm/plat-mxc/iomux-mx1-mx2.c b/arch/arm/plat-mxc/iomux-mx1-mx2.c
index a37163c..25023ac 100644
--- a/arch/arm/plat-mxc/iomux-mx1-mx2.c
+++ b/arch/arm/plat-mxc/iomux-mx1-mx2.c
@@ -116,14 +116,16 @@ int mxc_gpio_setup_multiple_pins(const int *pin_list, unsigned count,
int i;
unsigned gpio;
unsigned mode;
- int ret = -EINVAL;
+ int ret;

for (i = 0; i < count; i++) {
gpio = *p & (GPIO_PIN_MASK | GPIO_PORT_MASK);
mode = *p & ~(GPIO_PIN_MASK | GPIO_PORT_MASK);

- if (gpio >= (GPIO_PORT_MAX + 1) * 32)
+ if (gpio >= (GPIO_PORT_MAX + 1) * 32) {
+ ret = -EINVAL;
goto setup_error;
+ }

ret = gpio_request(gpio, label);
if (ret)


2010-02-03 20:56:56

by Uwe Kleine-König

[permalink] [raw]
Subject: Re: [PATCH] MX1/MX2: -EINVAL overwritten in second iteration in mxc_gpio_setup_multiple_pins()

On Wed, Feb 03, 2010 at 08:19:00PM +0100, Roel Kluin wrote:
> Due to the `ret = gpio_request()' below in the loop, the initial -EINVAL value
> of ret is overwritten.
>
> Signed-off-by: Roel Kluin <[email protected]>
Acked-by: Uwe Kleine-K?nig <[email protected]>

> ---
> Not 100% sure this is needed, please review. One more question: is it ok
> to return 0 when count is 0 (and nothing is done)?
I'd say yes. If you want nothing from me, I can say I gave you all you
wanted without doing anything.

Thanks
Uwe

--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |