[media] media: mtk-jpeg: fix continuous log "Context is NULL"
authorMinghsiu Tsai <minghsiu.tsai@mediatek.com>
Tue, 14 Mar 2017 14:21:22 +0000 (11:21 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 5 Apr 2017 18:08:26 +0000 (15:08 -0300)
commitba40be0fa21afd10a66bdfaee37d3ebcd9187c05
tree23bd52a589a30a61f1596b210ba5166972470ff7
parentaa58fedb8c7b6cf2f05941d238495f9e2f29655c
[media] media: mtk-jpeg: fix continuous log "Context is NULL"

The symptom is continuous log "mtk-jpeg 18004000.jpegdec: Context is NULL"
in kernel log. It is because the error handling in irq doesn't clear
interrupt.

The calling flow like as below when issue happen
mtk_jpeg_device_run()
mtk_jpeg_job_abort()
  v4l2_m2m_job_finish() -> m2m_dev->curr_ctx = NULL;
mtk_jpeg_dec_irq()
  v4l2_m2m_get_curr_priv()
     -> m2m_dev->curr_ctx == NULL
     -> return NULL
log "Context is NULL"

There is race condition between job_abort() and irq. In order to simplify
code, don't want to add extra flag to maintain state, empty job_abort() and
clear interrupt before v4l2_m2m_get_curr_priv() in irq.

Signed-off-by: Minghsiu Tsai <minghsiu.tsai@mediatek.com>
Acked-by: Rick Chang <rick.chang@mediatek.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c