scsi: mpt3sas: Don't access the structure after decrementing it's instance reference...
authorChaitra P B <chaitra.basappa@broadcom.com>
Thu, 31 May 2018 10:34:49 +0000 (06:34 -0400)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 19 Jun 2018 01:05:32 +0000 (21:05 -0400)
While configuring of NVMe device handling, _pcie_device structure member
was accessed after its reference count is decremented/put. Hence modified
code to access member of _pcie_device structure before its reference count
is decremented/put.

Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/mpt3sas/mpt3sas_scsih.c

index 884878b..bf57827 100644 (file)
@@ -2365,13 +2365,14 @@ scsih_slave_configure(struct scsi_device *sdev)
                                "connector name( %s)\n", ds,
                                pcie_device->enclosure_level,
                                pcie_device->connector_name);
-               pcie_device_put(pcie_device);
-               spin_unlock_irqrestore(&ioc->pcie_device_lock, flags);
-               scsih_change_queue_depth(sdev, qdepth);
 
                if (pcie_device->nvme_mdts)
                        blk_queue_max_hw_sectors(sdev->request_queue,
                                        pcie_device->nvme_mdts/512);
+
+               pcie_device_put(pcie_device);
+               spin_unlock_irqrestore(&ioc->pcie_device_lock, flags);
+               scsih_change_queue_depth(sdev, qdepth);
                /* Enable QUEUE_FLAG_NOMERGES flag, so that IOs won't be
                 ** merged and can eliminate holes created during merging
                 ** operation.