]> git.itanic.dy.fi Git - linux-stable/commitdiff
scsi: mpt3sas: Fix use-after-free warning
authorSreekanth Reddy <sreekanth.reddy@broadcom.com>
Tue, 6 Sep 2022 13:49:08 +0000 (19:19 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Sep 2022 10:17:05 +0000 (12:17 +0200)
commit 991df3dd5144f2e6b1c38b8d20ed3d4d21e20b34 upstream.

Fix the following use-after-free warning which is observed during
controller reset:

refcount_t: underflow; use-after-free.
WARNING: CPU: 23 PID: 5399 at lib/refcount.c:28 refcount_warn_saturate+0xa6/0xf0

Link: https://lore.kernel.org/r/20220906134908.1039-2-sreekanth.reddy@broadcom.com
Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/mpt3sas/mpt3sas_scsih.c

index d899f216245e5d9758faf9ce3c1fae6fa16f16c5..c8d97dc2ca63d7539d5d945c4d2c3e630261443c 100644 (file)
@@ -3215,6 +3215,7 @@ static struct fw_event_work *dequeue_next_fw_event(struct MPT3SAS_ADAPTER *ioc)
                fw_event = list_first_entry(&ioc->fw_event_list,
                                struct fw_event_work, list);
                list_del_init(&fw_event->list);
+               fw_event_work_put(fw_event);
        }
        spin_unlock_irqrestore(&ioc->fw_event_lock, flags);
 
@@ -3249,7 +3250,6 @@ _scsih_fw_event_cleanup_queue(struct MPT3SAS_ADAPTER *ioc)
                if (cancel_work_sync(&fw_event->work))
                        fw_event_work_put(fw_event);
 
-               fw_event_work_put(fw_event);
        }
 }