From abf5eab6ca53800b06069aa07d429142900d8190 Mon Sep 17 00:00:00 2001
From: Mirela Rabulea <mirela.rabulea@nxp.com>
Date: Wed, 13 Feb 2019 17:29:56 +0200
Subject: [PATCH] MLK-20889: mxc-jpeg: Jpeg decoder gets stuck with gplay &
 short yuv422 mjpeg video

Unlock hw_lock before calling v4l2_m2m_job_finish to avoid deadlock:
v4l2_m2m_job_finish -> v4l2_m2m_try_schedule -> job_ready locks hw_lock
v4l2_m2m_job_finish -> v4l2_m2m_try_run -> device_run locks hw_lock

Signed-off-by: Mirela Rabulea <mirela.rabulea@nxp.com>
Reviewed-by: Laurentiu Palcu <laurentiu.palcu@nxp.com>
---
 drivers/media/platform/imx8/mxc-jpeg.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/media/platform/imx8/mxc-jpeg.c b/drivers/media/platform/imx8/mxc-jpeg.c
index dfc04999cb5ec7..58ac99c86d5f78 100644
--- a/drivers/media/platform/imx8/mxc-jpeg.c
+++ b/drivers/media/platform/imx8/mxc-jpeg.c
@@ -498,7 +498,9 @@ buffers_done:
 	v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx);
 	v4l2_m2m_buf_done(to_vb2_v4l2_buffer(src_buf), buf_state);
 	v4l2_m2m_buf_done(to_vb2_v4l2_buffer(dst_buf), buf_state);
+	spin_unlock(&jpeg->hw_lock);
 	v4l2_m2m_job_finish(jpeg->m2m_dev, ctx->fh.m2m_ctx);
+	return IRQ_HANDLED;
 job_unlock:
 	spin_unlock(&jpeg->hw_lock);
 	return IRQ_HANDLED;
-- 
GitLab