[media] s5p-fimc: Do not allow changing format after REQBUFS
Protecting the color format with vb2_is_streaming() is not sufficient as this prevents changing the format only after VIDIOC_STREAMON. To prevent the color format reconfiguration as soon as buffers are allocated use vb2_is_busy() instead. Also make the videobuf queue ops structure static. Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
25b9875fb4
commit
c4a627333f
@ -527,7 +527,7 @@ static int fimc_cap_s_fmt_mplane(struct file *file, void *priv,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (vb2_is_streaming(&fimc->vid_cap.vbq) || fimc_capture_active(fimc))
|
||||
if (vb2_is_busy(&fimc->vid_cap.vbq) || fimc_capture_active(fimc))
|
||||
return -EBUSY;
|
||||
|
||||
frame = &ctx->d_frame;
|
||||
|
@ -758,7 +758,7 @@ static void fimc_unlock(struct vb2_queue *vq)
|
||||
mutex_unlock(&ctx->fimc_dev->lock);
|
||||
}
|
||||
|
||||
struct vb2_ops fimc_qops = {
|
||||
static struct vb2_ops fimc_qops = {
|
||||
.queue_setup = fimc_queue_setup,
|
||||
.buf_prepare = fimc_buf_prepare,
|
||||
.buf_queue = fimc_buf_queue,
|
||||
@ -965,7 +965,7 @@ static int fimc_m2m_s_fmt_mplane(struct file *file, void *priv,
|
||||
|
||||
vq = v4l2_m2m_get_vq(ctx->m2m_ctx, f->type);
|
||||
|
||||
if (vb2_is_streaming(vq)) {
|
||||
if (vb2_is_busy(vq)) {
|
||||
v4l2_err(&fimc->m2m.v4l2_dev, "queue (%d) busy\n", f->type);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user