Message ID | 20190529013540.GA20273@hari-Inspiron-1545 (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | wd719x: pass GFP_ATOMIC instead of GFP_KERNEL | expand |
On Wed, May 29, 2019 at 07:05:40AM +0530, Hariprasad Kelam wrote: > wd719x_chip_init is getting called in interrupt disabled > mode(spin_lock_irqsave) , so we need to GFP_ATOMIC instead > of GFP_KERNEL. > > Issue identified by coccicheck I don't think request_firmware is any more happy being called under a spinlock. The right fix is to not hold a spinlock over the board initialization.
On Tue, 28 May 2019, Christoph Hellwig wrote: > > wd719x_chip_init is getting called in interrupt disabled > > mode(spin_lock_irqsave) , so we need to GFP_ATOMIC instead > > of GFP_KERNEL. > > > > Issue identified by coccicheck > > I don't think request_firmware is any more happy being called under > a spinlock. The right fix is to not hold a spinlock over the board > initialization. > Right, and not even wd719x_chip_init() is always called in this context otherwise wd719x_board_found() would also need the same change.
diff --git a/drivers/scsi/wd719x.c b/drivers/scsi/wd719x.c index c2f4006..f300fd7 100644 --- a/drivers/scsi/wd719x.c +++ b/drivers/scsi/wd719x.c @@ -319,7 +319,7 @@ static int wd719x_chip_init(struct wd719x *wd) if (!wd->fw_virt) wd->fw_virt = dma_alloc_coherent(&wd->pdev->dev, wd->fw_size, - &wd->fw_phys, GFP_KERNEL); + &wd->fw_phys, GFP_ATOMIC); if (!wd->fw_virt) { ret = -ENOMEM; goto wd719x_init_end;
wd719x_chip_init is getting called in interrupt disabled mode(spin_lock_irqsave) , so we need to GFP_ATOMIC instead of GFP_KERNEL. Issue identified by coccicheck Signed-off-by: Hariprasad Kelam <hariprasad.kelam@gmail.com> --- drivers/scsi/wd719x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)