diff options
Diffstat (limited to 'drivers/media/v4l2-core/videobuf2-core.c')
-rw-r--r-- | drivers/media/v4l2-core/videobuf2-core.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c index 5b808e25fc09..7e6aff673a5a 100644 --- a/drivers/media/v4l2-core/videobuf2-core.c +++ b/drivers/media/v4l2-core/videobuf2-core.c | |||
@@ -2955,6 +2955,12 @@ static size_t __vb2_perform_fileio(struct vb2_queue *q, char __user *data, size_ | |||
2955 | buf->queued = 0; | 2955 | buf->queued = 0; |
2956 | buf->size = read ? vb2_get_plane_payload(q->bufs[index], 0) | 2956 | buf->size = read ? vb2_get_plane_payload(q->bufs[index], 0) |
2957 | : vb2_plane_size(q->bufs[index], 0); | 2957 | : vb2_plane_size(q->bufs[index], 0); |
2958 | /* Compensate for data_offset on read in the multiplanar case. */ | ||
2959 | if (is_multiplanar && read && | ||
2960 | fileio->b.m.planes[0].data_offset < buf->size) { | ||
2961 | buf->pos = fileio->b.m.planes[0].data_offset; | ||
2962 | buf->size -= buf->pos; | ||
2963 | } | ||
2958 | } else { | 2964 | } else { |
2959 | buf = &fileio->bufs[index]; | 2965 | buf = &fileio->bufs[index]; |
2960 | } | 2966 | } |