V4L/DVB (11575): uvcvideo: fix uvc resume failed
authorMing Lei <tom.leiming@gmail.com>
Fri, 17 Apr 2009 23:50:30 +0000 (20:50 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 9 May 2009 21:50:40 +0000 (18:50 -0300)
Now urb buffers is not freed before suspend, so uvc_alloc_urb_buffers should
return packet counts allocated originally during uvc resume, instead of zero.

This version uses round down to return packet counts on Linus' suggestions,
or else may lead to buffer destructed if packet size is changed before
calling uvc_alloc_urb_buffers() in this kind of case.

Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Acked-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/uvc/uvc_video.c

index a95e17329c5bb366d6eb7d70039a3328e8dbbc77..6ce974d7362f2d2c442f6d7174693eb1419b9f37 100644 (file)
@@ -742,7 +742,7 @@ static int uvc_alloc_urb_buffers(struct uvc_video_device *video,
 
        /* Buffers are already allocated, bail out. */
        if (video->urb_size)
-               return 0;
+               return video->urb_size / psize;
 
        /* Compute the number of packets. Bulk endpoints might transfer UVC
         * payloads accross multiple URBs.