[PATCH 1/5] scsi: fnic: use GFP_ATOMIC for VLAN alloc under spinlock

From: Linkai Gong

Date: Fri Jul 31 2026 - 03:40:59 EST


fnic_fcoe_process_vlan_resp() allocates a VLAN descriptor with
kzalloc_obj() (default GFP_KERNEL) while holding vlans_lock via
spin_lock_irqsave(). GFP_KERNEL may sleep, which is not allowed in
this atomic context and can trigger a sleeping-from-invalid-context
warning or deadlock.

Pass GFP_ATOMIC so the allocation is safe under the IRQ-safe spinlock.

Fixes: 098585aa8aca ("scsi: fnic: Add and integrate support for FIP")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Linkai Gong <gonglinkai@xxxxxxxxxx>
---
drivers/scsi/fnic/fip.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/fnic/fip.c b/drivers/scsi/fnic/fip.c
index 132f00512ee1..28c9861b6501 100644
--- a/drivers/scsi/fnic/fip.c
+++ b/drivers/scsi/fnic/fip.c
@@ -139,7 +139,7 @@ void fnic_fcoe_process_vlan_resp(struct fnic *fnic, struct fip_header *fiph)
FNIC_FIP_DBG(KERN_INFO, fnic->host,
fnic->fnic_num,
"process_vlan_resp: FIP VLAN %d\n", vid);
- vlan = kzalloc_obj(*vlan);
+ vlan = kzalloc_obj(*vlan, GFP_ATOMIC);

if (!vlan) {
/* retry from timer */
--
2.25.1