aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt2sas/mpt2sas_scsih.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_scsih.c')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_scsih.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
index 8dc2ad4a0a3..5690f09e010 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
@@ -7318,22 +7318,27 @@ _scsih_probe_sas(struct MPT2SAS_ADAPTER *ioc)
7318 /* SAS Device List */ 7318 /* SAS Device List */
7319 list_for_each_entry_safe(sas_device, next, &ioc->sas_device_init_list, 7319 list_for_each_entry_safe(sas_device, next, &ioc->sas_device_init_list,
7320 list) { 7320 list) {
7321 spin_lock_irqsave(&ioc->sas_device_lock, flags);
7322 list_move_tail(&sas_device->list, &ioc->sas_device_list);
7323 spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
7324 7321
7325 if (ioc->hide_drives) 7322 if (ioc->hide_drives)
7326 continue; 7323 continue;
7327 7324
7328 if (!mpt2sas_transport_port_add(ioc, sas_device->handle, 7325 if (!mpt2sas_transport_port_add(ioc, sas_device->handle,
7329 sas_device->sas_address_parent)) { 7326 sas_device->sas_address_parent)) {
7330 _scsih_sas_device_remove(ioc, sas_device); 7327 list_del(&sas_device->list);
7328 kfree(sas_device);
7329 continue;
7331 } else if (!sas_device->starget) { 7330 } else if (!sas_device->starget) {
7332 mpt2sas_transport_port_remove(ioc, 7331 mpt2sas_transport_port_remove(ioc,
7333 sas_device->sas_address, 7332 sas_device->sas_address,
7334 sas_device->sas_address_parent); 7333 sas_device->sas_address_parent);
7335 _scsih_sas_device_remove(ioc, sas_device); 7334 list_del(&sas_device->list);
7335 kfree(sas_device);
7336 continue;
7337
7336 } 7338 }
7339 spin_lock_irqsave(&ioc->sas_device_lock, flags);
7340 list_move_tail(&sas_device->list, &ioc->sas_device_list);
7341 spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
7337 } 7342 }
7338} 7343}
7339 7344