summaryrefslogtreecommitdiff
path: root/drivers/staging/media/imx
diff options
context:
space:
mode:
authorGuoniu.zhou <guoniu.zhou@nxp.com>2020-11-10 11:16:50 +0800
committerGuoniu.zhou <guoniu.zhou@nxp.com>2020-11-13 16:46:14 +0800
commit616f63072c5d2750fb3ce84305200971c8149aab (patch)
tree1b0e4bfb483b29e3c40e886560ddd5d8d1991883 /drivers/staging/media/imx
parent6372d161c41631f59827d671abe8cdcbda359a27 (diff)
MLK-24984: isi: use spin_lock_irqsave in irq handler to disable interrupt
Using spin_lock_irqsave instead of spin_lock to disable interrupt when in irq handler to avoid potential race issue. Signed-off-by: Guoniu.zhou <guoniu.zhou@nxp.com> Reviewed-by: Robby Cai <robby.cai@nxp.com>
Diffstat (limited to 'drivers/staging/media/imx')
-rw-r--r--drivers/staging/media/imx/imx8-isi-core.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/staging/media/imx/imx8-isi-core.c b/drivers/staging/media/imx/imx8-isi-core.c
index ce59ab414aa3..6f9599d18965 100644
--- a/drivers/staging/media/imx/imx8-isi-core.c
+++ b/drivers/staging/media/imx/imx8-isi-core.c
@@ -37,9 +37,10 @@ static irqreturn_t mxc_isi_irq_handler(int irq, void *priv)
struct mxc_isi_dev *mxc_isi = priv;
struct device *dev = &mxc_isi->pdev->dev;
struct mxc_isi_ier_reg *ier_reg = mxc_isi->pdata->ier_reg;
+ unsigned long flags;
u32 status;
- spin_lock(&mxc_isi->slock);
+ spin_lock_irqsave(&mxc_isi->slock, flags);
status = mxc_isi_get_irq_status(mxc_isi);
mxc_isi->status = status;
@@ -72,7 +73,7 @@ static irqreturn_t mxc_isi_irq_handler(int irq, void *priv)
ier_reg->excs_oflw_v_buf_en.mask))
dev_dbg(dev, "%s, IRQ EXCS OFLW Error stat=0x%X\n", __func__, status);
- spin_unlock(&mxc_isi->slock);
+ spin_unlock_irqrestore(&mxc_isi->slock, flags);
return IRQ_HANDLED;
}