]> err.no Git - linux-2.6/blobdiff - drivers/scsi/scsi_transport_iscsi.c
Merge branch 'linus' into x86/paravirt-spinlocks
[linux-2.6] / drivers / scsi / scsi_transport_iscsi.c
index 8e34f3c085754ee244f7fc80186f9303d1230a3a..3af7cbcc5c5d7c6f93822a2e7e29f15f17a7df13 100644 (file)
@@ -219,6 +219,7 @@ EXPORT_SYMBOL_GPL(iscsi_destroy_endpoint);
 
 struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)
 {
+       struct iscsi_endpoint *ep;
        struct device *dev;
 
        dev = class_find_device(&iscsi_endpoint_class, &handle,
@@ -226,7 +227,13 @@ struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)
        if (!dev)
                return NULL;
 
-       return iscsi_dev_to_endpoint(dev);
+       ep = iscsi_dev_to_endpoint(dev);
+       /*
+        * we can drop this now because the interface will prevent
+        * removals and lookups from racing.
+        */
+       put_device(dev);
+       return ep;
 }
 EXPORT_SYMBOL_GPL(iscsi_lookup_endpoint);