RE: [PATCH] megaraid: Fix a sleep-in-atomic bug

From: Sumit Saxena
Date: Wed May 31 2017 - 06:18:17 EST


>-----Original Message-----
>From: Jia-Ju Bai [mailto:baijiaju1990@xxxxxxx]
>Sent: Wednesday, May 31, 2017 8:27 AM
>To: kashyap.desai@xxxxxxxxxxxx; sumit.saxena@xxxxxxxxxxxx;
>shivasharan.srikanteshwara@xxxxxxxxxxxx; jejb@xxxxxxxxxxxxxxxxxx;
>martin.petersen@xxxxxxxxxx
>Cc: megaraidlinux.pdl@xxxxxxxxxxxx; linux-scsi@xxxxxxxxxxxxxxx; linux-
>kernel@xxxxxxxxxxxxxxx; Jia-Ju Bai
>Subject: [PATCH] megaraid: Fix a sleep-in-atomic bug
>
>The driver may sleep under a spin lock, and the function call path is:
>mraid_mm_attach_buf (acquire the lock by spin_lock_irqsave)
> pci_pool_alloc(GFP_KERNEL) --> may sleep
>
>To fix it, the "GFP_KERNEL" is replaced with "GFP_ATOMIC".
>
>Signed-off-by: Jia-Ju Bai <baijiaju1990@xxxxxxx>
>---
> drivers/scsi/megaraid/megaraid_mm.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/drivers/scsi/megaraid/megaraid_mm.c
>b/drivers/scsi/megaraid/megaraid_mm.c
>index 4cf9ed9..c43afb8 100644
>--- a/drivers/scsi/megaraid/megaraid_mm.c
>+++ b/drivers/scsi/megaraid/megaraid_mm.c
>@@ -574,7 +574,7 @@
>
> kioc->pool_index = right_pool;
> kioc->free_buf = 1;
>- kioc->buf_vaddr = pci_pool_alloc(pool->handle, GFP_KERNEL,
>+ kioc->buf_vaddr = pci_pool_alloc(pool->handle, GFP_ATOMIC,
> &kioc->buf_paddr);
> spin_unlock_irqrestore(&pool->lock, flags);

This is very old driver and reached EOL. Did you face any issue because of
this bug or discover this through code review?
Anyways patch looks good to me.

Acked-by: Sumit Saxena <sumit.saxena@xxxxxxxxxxxx>

>
>--
>1.7.9.5
>