Backport summary: ----------------- The return logic in v4l2_m2m_qbuf() was adjusted manually so that it matches the logic in the original commit (v4l2_m2m_adjust_mem_offset() being called only if !ret and before the v4l2_m2m_try_schedule() call):
@@ -500,10 +510,16 @@ int v4l2_m2m_qbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, return -EPERM; } ret = vb2_qbuf(vq, vdev->v4l2_dev->mdev, buf); - if (!ret && !(buf->flags & V4L2_BUF_FLAG_IN_REQUEST)) + if (ret) + return ret; + + /* Adjust MMAP memory offsets for the CAPTURE queue */ + v4l2_m2m_adjust_mem_offset(vq, buf); + + if (!(buf->flags & V4L2_BUF_FLAG_IN_REQUEST)) v4l2_m2m_try_schedule(m2m_ctx);
- return ret; + return 0; } EXPORT_SYMBOL_GPL(v4l2_m2m_qbuf);
Build tested only.
Chen-Yu Tsai (1): media: v4l2-mem2mem: Apply DST_QUEUE_OFF_BASE on MMAP buffers across ioctls
drivers/media/v4l2-core/v4l2-mem2mem.c | 60 ++++++++++++++++++++------ 1 file changed, 46 insertions(+), 14 deletions(-)