diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/scsi_transport_sas.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c index 357b52f5f996..e950435a11d8 100644 --- a/drivers/scsi/scsi_transport_sas.c +++ b/drivers/scsi/scsi_transport_sas.c | |||
@@ -687,7 +687,17 @@ sas_rphy_delete(struct sas_rphy *rphy) | |||
687 | struct Scsi_Host *shost = dev_to_shost(parent->dev.parent); | 687 | struct Scsi_Host *shost = dev_to_shost(parent->dev.parent); |
688 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); | 688 | struct sas_host_attrs *sas_host = to_sas_host_attrs(shost); |
689 | 689 | ||
690 | scsi_remove_target(dev); | 690 | switch (rphy->identify.device_type) { |
691 | case SAS_END_DEVICE: | ||
692 | scsi_remove_target(dev); | ||
693 | break; | ||
694 | case SAS_EDGE_EXPANDER_DEVICE: | ||
695 | case SAS_FANOUT_EXPANDER_DEVICE: | ||
696 | device_for_each_child(dev, NULL, do_sas_phy_delete); | ||
697 | break; | ||
698 | default: | ||
699 | break; | ||
700 | } | ||
691 | 701 | ||
692 | transport_remove_device(dev); | 702 | transport_remove_device(dev); |
693 | device_del(dev); | 703 | device_del(dev); |