diff options
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_scsih.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index 7a3865d9c959..c13efc3268d8 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c | |||
@@ -7657,22 +7657,27 @@ _scsih_probe_sas(struct MPT2SAS_ADAPTER *ioc) | |||
7657 | /* SAS Device List */ | 7657 | /* SAS Device List */ |
7658 | list_for_each_entry_safe(sas_device, next, &ioc->sas_device_init_list, | 7658 | list_for_each_entry_safe(sas_device, next, &ioc->sas_device_init_list, |
7659 | list) { | 7659 | list) { |
7660 | spin_lock_irqsave(&ioc->sas_device_lock, flags); | ||
7661 | list_move_tail(&sas_device->list, &ioc->sas_device_list); | ||
7662 | spin_unlock_irqrestore(&ioc->sas_device_lock, flags); | ||
7663 | 7660 | ||
7664 | if (ioc->hide_drives) | 7661 | if (ioc->hide_drives) |
7665 | continue; | 7662 | continue; |
7666 | 7663 | ||
7667 | if (!mpt2sas_transport_port_add(ioc, sas_device->handle, | 7664 | if (!mpt2sas_transport_port_add(ioc, sas_device->handle, |
7668 | sas_device->sas_address_parent)) { | 7665 | sas_device->sas_address_parent)) { |
7669 | _scsih_sas_device_remove(ioc, sas_device); | 7666 | list_del(&sas_device->list); |
7667 | kfree(sas_device); | ||
7668 | continue; | ||
7670 | } else if (!sas_device->starget) { | 7669 | } else if (!sas_device->starget) { |
7671 | mpt2sas_transport_port_remove(ioc, | 7670 | mpt2sas_transport_port_remove(ioc, |
7672 | sas_device->sas_address, | 7671 | sas_device->sas_address, |
7673 | sas_device->sas_address_parent); | 7672 | sas_device->sas_address_parent); |
7674 | _scsih_sas_device_remove(ioc, sas_device); | 7673 | list_del(&sas_device->list); |
7674 | kfree(sas_device); | ||
7675 | continue; | ||
7676 | |||
7675 | } | 7677 | } |
7678 | spin_lock_irqsave(&ioc->sas_device_lock, flags); | ||
7679 | list_move_tail(&sas_device->list, &ioc->sas_device_list); | ||
7680 | spin_unlock_irqrestore(&ioc->sas_device_lock, flags); | ||
7676 | } | 7681 | } |
7677 | } | 7682 | } |
7678 | 7683 | ||