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 <[email protected]>
---
 drivers/scsi/mpt3sas/mpt3sas_scsih.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c 
b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index 884878b..bf57827 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -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.
-- 
1.8.3.1

Reply via email to