|
@@ -219,6 +219,7 @@ EXPORT_SYMBOL_GPL(iscsi_destroy_endpoint);
|
|
|
|
|
|
struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)
|
|
struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)
|
|
{
|
|
{
|
|
|
|
+ struct iscsi_endpoint *ep;
|
|
struct device *dev;
|
|
struct device *dev;
|
|
|
|
|
|
dev = class_find_device(&iscsi_endpoint_class, &handle,
|
|
dev = class_find_device(&iscsi_endpoint_class, &handle,
|
|
@@ -226,7 +227,13 @@ struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)
|
|
if (!dev)
|
|
if (!dev)
|
|
return NULL;
|
|
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);
|
|
EXPORT_SYMBOL_GPL(iscsi_lookup_endpoint);
|
|
|
|
|