Message ID | 20090302143604.57bd4f53.akpm@linux-foundation.org |
---|---|
State | Accepted, archived |
Headers | show |
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/ >
--- 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;