From 8a55ddd94c3a763f701f003fd56e39f7c317063d Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Fri, 13 Mar 2015 10:41:39 -0300 Subject: [PATCH] [media] au0828: fix broken streaming Commit c5036d61e0bed3f4f51391a145638b426825e69c ("media: au0828: drop vbi_buffer_filled() and re-use buffer_filled()") broke video and vbi streaming. The vb2_buffer struct was copied instead of taking a pointer to it, but vb2_buffer_done() needs the real object, not a copy, since it is hooking the buffer into a different list. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- drivers/media/usb/au0828/au0828-video.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c index bf990a931d4e..1a362a041ab3 100644 --- a/drivers/media/usb/au0828/au0828-video.c +++ b/drivers/media/usb/au0828/au0828-video.c @@ -302,20 +302,20 @@ static inline void buffer_filled(struct au0828_dev *dev, struct au0828_dmaqueue *dma_q, struct au0828_buffer *buf) { - struct vb2_buffer vb = buf->vb; - struct vb2_queue *q = vb.vb2_queue; + struct vb2_buffer *vb = &buf->vb; + struct vb2_queue *q = vb->vb2_queue; /* Advice that buffer was filled */ au0828_isocdbg("[%p/%d] wakeup\n", buf, buf->top_field); if (q->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) - vb.v4l2_buf.sequence = dev->frame_count++; + vb->v4l2_buf.sequence = dev->frame_count++; else - vb.v4l2_buf.sequence = dev->vbi_frame_count++; + vb->v4l2_buf.sequence = dev->vbi_frame_count++; - vb.v4l2_buf.field = V4L2_FIELD_INTERLACED; - v4l2_get_timestamp(&vb.v4l2_buf.timestamp); - vb2_buffer_done(&vb, VB2_BUF_STATE_DONE); + vb->v4l2_buf.field = V4L2_FIELD_INTERLACED; + v4l2_get_timestamp(&vb->v4l2_buf.timestamp); + vb2_buffer_done(vb, VB2_BUF_STATE_DONE); } /* -- 2.39.5