Message ID | 20220107024047.1051915-1-yangyingliang@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [-next] dmaengine: at_xdmac: Fix missing unlock in at_xdmac_tasklet() | expand |
On 1/7/22 4:40 AM, Yang Yingliang wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > Add the missing unlock before return from at_xdmac_tasklet(). > > Fixes: e77e561925df ("dmaengine: at_xdmac: Fix race over irq_status") > Reported-by: Hulk Robot <hulkci@huawei.com> > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> > --- > drivers/dma/at_xdmac.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c > index a1da2b4b6d73..1476156af74b 100644 > --- a/drivers/dma/at_xdmac.c > +++ b/drivers/dma/at_xdmac.c > @@ -1681,8 +1681,10 @@ static void at_xdmac_tasklet(struct tasklet_struct *t) > __func__, atchan->irq_status); > > if (!(atchan->irq_status & AT_XDMAC_CIS_LIS) && > - !(atchan->irq_status & error_mask)) > + !(atchan->irq_status & error_mask)) { > + spin_unlock_irq(&atchan->lock); > return; oh yes, thanks! you can directly return spin_unlock_irq(&atchan->lock); to avoid the extra braces. Anyway, it's good: Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com> > + } > > if (atchan->irq_status & error_mask) > at_xdmac_handle_error(atchan); > -- > 2.25.1 >
On 07-01-22, 10:40, Yang Yingliang wrote: > Add the missing unlock before return from at_xdmac_tasklet(). Applied, thanks > > Fixes: e77e561925df ("dmaengine: at_xdmac: Fix race over irq_status") > Reported-by: Hulk Robot <hulkci@huawei.com> > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> > --- > drivers/dma/at_xdmac.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c > index a1da2b4b6d73..1476156af74b 100644 > --- a/drivers/dma/at_xdmac.c > +++ b/drivers/dma/at_xdmac.c > @@ -1681,8 +1681,10 @@ static void at_xdmac_tasklet(struct tasklet_struct *t) > __func__, atchan->irq_status); > > if (!(atchan->irq_status & AT_XDMAC_CIS_LIS) && > - !(atchan->irq_status & error_mask)) > + !(atchan->irq_status & error_mask)) { > + spin_unlock_irq(&atchan->lock); > return; > + } > > if (atchan->irq_status & error_mask) > at_xdmac_handle_error(atchan); > -- > 2.25.1
diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c index a1da2b4b6d73..1476156af74b 100644 --- a/drivers/dma/at_xdmac.c +++ b/drivers/dma/at_xdmac.c @@ -1681,8 +1681,10 @@ static void at_xdmac_tasklet(struct tasklet_struct *t) __func__, atchan->irq_status); if (!(atchan->irq_status & AT_XDMAC_CIS_LIS) && - !(atchan->irq_status & error_mask)) + !(atchan->irq_status & error_mask)) { + spin_unlock_irq(&atchan->lock); return; + } if (atchan->irq_status & error_mask) at_xdmac_handle_error(atchan);
Add the missing unlock before return from at_xdmac_tasklet(). Fixes: e77e561925df ("dmaengine: at_xdmac: Fix race over irq_status") Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> --- drivers/dma/at_xdmac.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)