diff options
author | Guoniu.zhou <guoniu.zhou@nxp.com> | 2020-11-10 11:16:50 +0800 |
---|---|---|
committer | Guoniu.zhou <guoniu.zhou@nxp.com> | 2020-11-13 16:46:14 +0800 |
commit | 616f63072c5d2750fb3ce84305200971c8149aab (patch) | |
tree | 1b0e4bfb483b29e3c40e886560ddd5d8d1991883 /drivers/staging/media/imx | |
parent | 6372d161c41631f59827d671abe8cdcbda359a27 (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.c | 5 |
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; } |