diff mbox

Re: [PATCH] rtc-v3020: add ability to access v3020 chip with GPIOs

Message ID 20090302143604.57bd4f53.akpm@linux-foundation.org
State Accepted, archived
Headers show

Commit Message

Andrew Morton March 2, 2009, 10:36 p.m. UTC
On Mon,  2 Mar 2009 13:40:57 +0200
Mike Rapoport <mike@compulab.co.il> wrote:

> +static int v3020_gpio_map(struct v3020 *chip, struct platform_device *pdev,
> +			  struct v3020_platform_data *pdata)
> +{
> +	int i, err;
> +
> +	v3020_gpio[V3020_CS].gpio = pdata->gpio_cs;
> +	v3020_gpio[V3020_WR].gpio = pdata->gpio_wr;
> +	v3020_gpio[V3020_RD].gpio = pdata->gpio_rd;
> +	v3020_gpio[V3020_IO].gpio = pdata->gpio_io;
> +
> +	for (i = 0; i < ARRAY_SIZE(v3020_gpio); i++) {
> +		err = gpio_request(v3020_gpio[i].gpio, v3020_gpio[i].name);
> +		if (err)
> +			goto err_request;
> +
> +		gpio_direction_output(v3020_gpio[i].gpio, 1);
> +	}
> +
> +	chip->gpio = v3020_gpio;
> +
> +	return 0;
> +
> +err_request:
> +	for (; i >= 0; i--)
> +		gpio_free(v3020_gpio[i].gpio);
> +
> +	return err;
> +}

It needs this fix, I think?


fix off-by-one in error path



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
-~----------~----~----~----~------~----~------~--~---

Comments

Mike Rapoport March 3, 2009, 6:16 a.m. UTC | #1
Andrew Morton wrote:
> On Mon,  2 Mar 2009 13:40:57 +0200
> Mike Rapoport <mike@compulab.co.il> wrote:
> 
>> +static int v3020_gpio_map(struct v3020 *chip, struct platform_device *pdev,
>> +			  struct v3020_platform_data *pdata)
>> +{
>> +	int i, err;
>> +
>> +	v3020_gpio[V3020_CS].gpio = pdata->gpio_cs;
>> +	v3020_gpio[V3020_WR].gpio = pdata->gpio_wr;
>> +	v3020_gpio[V3020_RD].gpio = pdata->gpio_rd;
>> +	v3020_gpio[V3020_IO].gpio = pdata->gpio_io;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(v3020_gpio); i++) {
>> +		err = gpio_request(v3020_gpio[i].gpio, v3020_gpio[i].name);
>> +		if (err)
>> +			goto err_request;
>> +
>> +		gpio_direction_output(v3020_gpio[i].gpio, 1);
>> +	}
>> +
>> +	chip->gpio = v3020_gpio;
>> +
>> +	return 0;
>> +
>> +err_request:
>> +	for (; i >= 0; i--)
>> +		gpio_free(v3020_gpio[i].gpio);
>> +
>> +	return err;
>> +}
> 
> It needs this fix, I think?

Indeed. Thanks.

> 
> fix off-by-one in error path
> 
> --- a/drivers/rtc/rtc-v3020.c~rtc-v3020-add-ability-to-access-v3020-chip-with-gpios-fix
> +++ a/drivers/rtc/rtc-v3020.c
> @@ -136,7 +136,7 @@ static int v3020_gpio_map(struct v3020 *
>  	return 0;
>  
>  err_request:
> -	for (; i >= 0; i--)
> +	while (--i >= 0)
>  		gpio_free(v3020_gpio[i].gpio);
>  
>  	return err;
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>
diff mbox

Patch

--- a/drivers/rtc/rtc-v3020.c~rtc-v3020-add-ability-to-access-v3020-chip-with-gpios-fix
+++ a/drivers/rtc/rtc-v3020.c
@@ -136,7 +136,7 @@  static int v3020_gpio_map(struct v3020 *
 	return 0;
 
 err_request:
-	for (; i >= 0; i--)
+	while (--i >= 0)
 		gpio_free(v3020_gpio[i].gpio);
 
 	return err;