From: Hans de Goede Date: Tue, 26 Oct 2010 08:16:32 +0000 (-0300) Subject: [media] gspca: only set gspca->int_urb if submitting it succeeds X-Git-Tag: v2.6.38-rc1~470^2~237 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=2661da47daefd4f22f9fdc7e9294a1cb9edf515b;p=~shefty%2Frdma-dev.git [media] gspca: only set gspca->int_urb if submitting it succeeds Currently alloc_and_submit_int_urb() is setting gspca->int_urb as soon as the allocation has succeeded, but if the subsequent submit fails, the urb gets destroyed. And then later will get destroyed again in gspca_input_destroy_urb() because gspca->int_urb is set, leading to a double free. Signed-off-by: Hans de Goede Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c index dbd63c54231..a089fcaed8a 100644 --- a/drivers/media/video/gspca/gspca.c +++ b/drivers/media/video/gspca/gspca.c @@ -224,12 +224,12 @@ static int alloc_and_submit_int_urb(struct gspca_dev *gspca_dev, buffer, buffer_len, int_irq, (void *)gspca_dev, interval); urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; - gspca_dev->int_urb = urb; ret = usb_submit_urb(urb, GFP_KERNEL); if (ret < 0) { PDEBUG(D_ERR, "submit int URB failed with error %i", ret); goto error_submit; } + gspca_dev->int_urb = urb; return ret; error_submit: