@@ -2418,6 +2418,7 @@ struct vb2_fileio_data {
struct v4l2_requestbuffers req;
struct v4l2_buffer b;
struct vb2_fileio_buf bufs[VIDEO_MAX_FRAME];
+ unsigned int buf_index;
unsigned int index;
unsigned int q_count;
unsigned int dq_count;
@@ -2519,6 +2520,7 @@ static int __vb2_init_fileio(struct vb2_queue *q, int read)
fileio->bufs[i].queued = 1;
}
fileio->index = q->num_buffers;
+ fileio->buf_index = q->num_buffers;
}
/*
@@ -2597,7 +2599,7 @@ static size_t __vb2_perform_fileio(struct vb2_queue *q, char __user *data, size_
/*
* Check if we need to dequeue the buffer.
*/
- index = fileio->index;
+ index = fileio->buf_index;
if (index >= q->num_buffers) {
/*
* Call vb2_dqbuf to get buffer back.
@@ -2611,7 +2613,7 @@ static size_t __vb2_perform_fileio(struct vb2_queue *q, char __user *data, size_
return ret;
fileio->dq_count += 1;
- index = fileio->b.index;
+ fileio->buf_index = index = fileio->b.index;
buf = &fileio->bufs[index];
/*
@@ -2689,6 +2691,7 @@ static size_t __vb2_perform_fileio(struct vb2_queue *q, char __user *data, size_
fileio->q_count += 1;
if (fileio->index < q->num_buffers)
fileio->index++;
+ fileio->buf_index = fileio->index;
}
/*