Fix transport class oops
PATCH 1/1 Fix transport class oops
There's an oops that sometimes shows up with SCSI transport classes in sysfs_hash_and_remove. The problem is that now, because of the class to device and vice versa symlinks, all classes have to be removed from visibility *before* the device is removed from visibility.
The transport class trigger points violate this, so bring them back into conformance.
James
drivers/scsi/scsi_sysfs.c +6 -3
@@ -691,16 +691,19 @@ int scsi_sysfs_add_sdev(struct scsi_devivoid __scsi_remove_device (struct scsi_device *sdev) { +struct device *dev = &sdev->sdev_gendev; +if (scsi_device_set_state (sdev,SDEV_CANCEL ) !=0 )return ;class_device_unregister (&sdev->sdev_classdev); -device_del (&sdev->sdev_gendev); +transport_remove_device (dev); +device_del (dev);scsi_device_set_state (sdev,SDEV_DEL );if (sdev->host->hostt->slave_destroy) sdev->host->hostt->slave_destroy (sdev); -transport_unregister_device (&sdev->sdev_gendev); -put_device (&sdev->sdev_gendev); +transport_destroy_device (dev); +put_device (dev); }/**