Re: [PATCH 2.6.19] drivers/media/video/cpia2/cpia2_usb.c: Freepreviously allocated memory (in array elements) if kmalloc() returns NULL.

From: David Rientjes
Date: Thu Dec 07 2006 - 19:04:49 EST


On Fri, 8 Dec 2006, Mariusz Kozlowski wrote:

> > --- a/drivers/media/video/cpia2/cpia2_usb.c
> > +++ b/drivers/media/video/cpia2/cpia2_usb.c
> > @@ -640,6 +640,10 @@ static int submit_urbs(struct camera_dat
> > cam->sbuf[i].data =
> > kmalloc(FRAMES_PER_DESC * FRAME_SIZE_PER_DESC, GFP_KERNEL);
> > if (!cam->sbuf[i].data) {
> > + for (--i; i >= 0; i--) {
> > + kfree(cam->sbuf[i].data);
> > + cam->sbuf[i].data = NULL;
> > + }
> > return -ENOMEM;
> > }
> > }
>
> Just for future. Shorter and more readable version of your for(...) thing:
>
> while (i--) {
> ...
> }
>

No, that is not equivalent.

You want
while (i-- >= 0) {
...
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/