[SCSI] sas: fix remote phy removal
authorChristoph Hellwig <hch@lst.de>
Sun, 25 Sep 2005 21:10:33 +0000 (23:10 +0200)
committerJames Bottomley <jejb@mulgrave.(none)>
Sun, 25 Sep 2005 22:19:35 +0000 (17:19 -0500)
Brown paperbag bug:  sas_rphy_delete was ordered completely
wrong.  Fix it up to be the same order as sas_phy_delete or
fc_rport_terminate and fix rphy objects that leaked after module
removal.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/scsi_transport_sas.c

index ff724bbe661101efdce6766bdd1ecb606934006a..1d145d2f9a38b37ed6a3b0b281f60e78aa1ee7c5 100644 (file)
@@ -628,17 +628,16 @@ sas_rphy_delete(struct sas_rphy *rphy)
        struct Scsi_Host *shost = dev_to_shost(parent->dev.parent);
        struct sas_host_attrs *sas_host = to_sas_host_attrs(shost);
 
-       transport_destroy_device(&rphy->dev);
+       scsi_remove_target(dev);
 
-       scsi_remove_target(&rphy->dev);
+       transport_remove_device(dev);
+       device_del(dev);
+       transport_destroy_device(dev);
 
        spin_lock(&sas_host->lock);
        list_del(&rphy->list);
        spin_unlock(&sas_host->lock);
 
-       transport_remove_device(dev);
-       device_del(dev);
-       transport_destroy_device(dev);
        put_device(&parent->dev);
 }
 EXPORT_SYMBOL(sas_rphy_delete);