From: Hans Verkuil <hverkuil-ci...@xs4all.nl>

v4l2_ctrl_request_complete can sleep, so can't be called while
a spinlock is held.

Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>
---
 drivers/media/platform/vicodec/vicodec-core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/vicodec/vicodec-core.c 
b/drivers/media/platform/vicodec/vicodec-core.c
index bd01a9206aa6..92647f02fc49 100644
--- a/drivers/media/platform/vicodec/vicodec-core.c
+++ b/drivers/media/platform/vicodec/vicodec-core.c
@@ -442,14 +442,14 @@ static void device_run(void *priv)
                ctx->comp_has_next_frame = false;
        }
        v4l2_m2m_buf_done(dst_buf, state);
-       if (ctx->is_stateless && src_req)
-               v4l2_ctrl_request_complete(src_req, &ctx->hdl);
 
        ctx->comp_size = 0;
        ctx->header_size = 0;
        ctx->comp_magic_cnt = 0;
        ctx->comp_has_frame = false;
        spin_unlock(ctx->lock);
+       if (ctx->is_stateless && src_req)
+               v4l2_ctrl_request_complete(src_req, &ctx->hdl);
 
        if (ctx->is_enc)
                v4l2_m2m_job_finish(dev->stateful_enc.m2m_dev, ctx->fh.m2m_ctx);
-- 
2.17.1

Reply via email to