diff options
-rw-r--r-- | drivers/media/video/ivtv/ivtv-fileops.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/media/video/ivtv/ivtv-fileops.c b/drivers/media/video/ivtv/ivtv-fileops.c index b7457fc60ba5..1c404e454a36 100644 --- a/drivers/media/video/ivtv/ivtv-fileops.c +++ b/drivers/media/video/ivtv/ivtv-fileops.c | |||
@@ -600,13 +600,14 @@ retry: | |||
600 | since we may get here before the stream has been fully set-up */ | 600 | since we may get here before the stream has been fully set-up */ |
601 | if (mode == OUT_YUV && s->q_full.length == 0 && itv->dma_data_req_size) { | 601 | if (mode == OUT_YUV && s->q_full.length == 0 && itv->dma_data_req_size) { |
602 | while (count >= itv->dma_data_req_size) { | 602 | while (count >= itv->dma_data_req_size) { |
603 | if (!ivtv_yuv_udma_stream_frame (itv, (void __user *)user_buf)) { | 603 | rc = ivtv_yuv_udma_stream_frame(itv, (void __user *)user_buf); |
604 | bytes_written += itv->dma_data_req_size; | 604 | |
605 | user_buf += itv->dma_data_req_size; | 605 | if (rc < 0) |
606 | count -= itv->dma_data_req_size; | 606 | return rc; |
607 | } else { | 607 | |
608 | break; | 608 | bytes_written += itv->dma_data_req_size; |
609 | } | 609 | user_buf += itv->dma_data_req_size; |
610 | count -= itv->dma_data_req_size; | ||
610 | } | 611 | } |
611 | if (count == 0) { | 612 | if (count == 0) { |
612 | IVTV_DEBUG_HI_FILE("Wrote %d bytes to %s (%d)\n", bytes_written, s->name, s->q_full.bytesused); | 613 | IVTV_DEBUG_HI_FILE("Wrote %d bytes to %s (%d)\n", bytes_written, s->name, s->q_full.bytesused); |