diff --git a/drivers/media/platform/meson/meson_drv.c b/drivers/media/platform/meson/meson_drv.c index 03640b793d4c..03412e4771da 100644 --- a/drivers/media/platform/meson/meson_drv.c +++ b/drivers/media/platform/meson/meson_drv.c @@ -767,6 +767,7 @@ static int vdec_src_stop_streaming(struct vb2_queue *vq) * is not really symmetrical with the init routines. */ amstream_port_release(amstream_find_port("amstream_vbuf")); ctx->esparser_busy = false; + ctx->eos_state = EOS_NONE; return 0; } diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c index 038dd2ac54fb..c1e1e0d9c0f9 100644 --- a/drivers/media/v4l2-core/videobuf2-core.c +++ b/drivers/media/v4l2-core/videobuf2-core.c @@ -595,7 +595,7 @@ static int __reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req) * We already have buffers allocated, so first check if they * are not in use and can be freed. */ - if (q->memory == V4L2_MEMORY_MMAP && __buffers_in_use(q)) { + if (q->ops->buf_cleanup && q->memory == V4L2_MEMORY_MMAP && __buffers_in_use(q)) { dprintk(1, "reqbufs: memory in use, cannot free\n"); return -EBUSY; }