[media] pwc: do not decompress the image unless the state is DONE
authorHans Verkuil <hans.verkuil@cisco.com>
Tue, 4 Mar 2014 10:28:11 +0000 (07:28 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Tue, 11 Mar 2014 09:56:38 +0000 (06:56 -0300)
There is no point in trying to decompress a captured frame unless
the buffer state is OK. It won't be used in any other state, and
in fact the contents of the buffer might well be corrupt.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/usb/pwc/pwc-if.c

index 1a27096b3f911ad40a326259d8435aa221572328..84a6720b1d00064c55be2f9f2cdd0a112be35df3 100644 (file)
@@ -619,12 +619,15 @@ static void buffer_finish(struct vb2_buffer *vb)
        struct pwc_device *pdev = vb2_get_drv_priv(vb->vb2_queue);
        struct pwc_frame_buf *buf = container_of(vb, struct pwc_frame_buf, vb);
 
-       /*
-        * Application has called dqbuf and is getting back a buffer we've
-        * filled, take the pwc data we've stored in buf->data and decompress
-        * it into a usable format, storing the result in the vb2_buffer
-        */
-       pwc_decompress(pdev, buf);
+       if (vb->state == VB2_BUF_STATE_DONE) {
+               /*
+                * Application has called dqbuf and is getting back a buffer
+                * we've filled, take the pwc data we've stored in buf->data
+                * and decompress it into a usable format, storing the result
+                * in the vb2_buffer.
+                */
+               pwc_decompress(pdev, buf);
+       }
 }
 
 static void buffer_cleanup(struct vb2_buffer *vb)