2019-05-29 01:38:07

by Hariprasad Kelam

[permalink] [raw]
Subject: [PATCH] wd719x: pass GFP_ATOMIC instead of GFP_KERNEL

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 <[email protected]>
---
drivers/scsi/wd719x.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

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;
--
2.7.4


2019-05-29 06:24:35

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH] wd719x: pass GFP_ATOMIC instead of GFP_KERNEL

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.

2019-05-29 21:13:31

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH] wd719x: pass GFP_ATOMIC instead of GFP_KERNEL

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.