Em Sat, 4 Aug 2018 14:45:20 +0200 Hans Verkuil <hverkuil@xxxxxxxxx> escreveu: > From: Hans Verkuil <hans.verkuil@xxxxxxxxx> > > Check if the vb2 queue uses requests, and if so refuse to > add buffers that are not part of a request. Also check for > the reverse: a vb2 queue did not use requests, and an attempt > was made to queue a buffer to a request. > > We might relax this in the future, but for now just return > -EPERM in that case. > > Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> Reviewed-by: Mauro Carvalho Chehab <mchehab+samsung@xxxxxxxxxx> > --- > drivers/media/common/videobuf2/videobuf2-v4l2.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/common/videobuf2/videobuf2-v4l2.c b/drivers/media/common/videobuf2/videobuf2-v4l2.c > index 88d8f60c742b..1b2351986230 100644 > --- a/drivers/media/common/videobuf2/videobuf2-v4l2.c > +++ b/drivers/media/common/videobuf2/videobuf2-v4l2.c > @@ -378,8 +378,16 @@ static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct media_device *md > return ret; > } > > - if (!(b->flags & V4L2_BUF_FLAG_REQUEST_FD)) > + if (!(b->flags & V4L2_BUF_FLAG_REQUEST_FD)) { > + if (q->uses_requests) { > + dprintk(1, "%s: queue uses requests\n", opname); > + return -EPERM; > + } > return 0; > + } else if (q->uses_qbuf) { > + dprintk(1, "%s: queue does not use requests\n", opname); > + return -EPERM; > + } > > /* > * For proper locking when queueing a request you need to be able Thanks, Mauro