Commit 20b1e674 authored by mochel@digitalimplant.org's avatar mochel@digitalimplant.org Committed by Greg Kroah-Hartman

[PATCH] Use device_for_each_child() to unregister devices in scsi_remove_target().

Signed-off-by: default avatarPatrick Mochel <mochel@digitalimplant.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>

Index: gregkh-2.6/drivers/scsi/scsi_sysfs.c
===================================================================
parent 0293a509
...@@ -669,6 +669,13 @@ void __scsi_remove_target(struct scsi_target *starget) ...@@ -669,6 +669,13 @@ void __scsi_remove_target(struct scsi_target *starget)
scsi_target_reap(starget); scsi_target_reap(starget);
} }
static int __remove_child (struct device * dev, void * data)
{
if (scsi_is_target_device(dev))
__scsi_remove_target(to_scsi_target(dev));
return 0;
}
/** /**
* scsi_remove_target - try to remove a target and all its devices * scsi_remove_target - try to remove a target and all its devices
* @dev: generic starget or parent of generic stargets to be removed * @dev: generic starget or parent of generic stargets to be removed
...@@ -679,7 +686,7 @@ void __scsi_remove_target(struct scsi_target *starget) ...@@ -679,7 +686,7 @@ void __scsi_remove_target(struct scsi_target *starget)
*/ */
void scsi_remove_target(struct device *dev) void scsi_remove_target(struct device *dev)
{ {
struct device *rdev, *idev, *next; struct device *rdev;
if (scsi_is_target_device(dev)) { if (scsi_is_target_device(dev)) {
__scsi_remove_target(to_scsi_target(dev)); __scsi_remove_target(to_scsi_target(dev));
...@@ -687,10 +694,7 @@ void scsi_remove_target(struct device *dev) ...@@ -687,10 +694,7 @@ void scsi_remove_target(struct device *dev)
} }
rdev = get_device(dev); rdev = get_device(dev);
list_for_each_entry_safe(idev, next, &dev->children, node) { device_for_each_child(dev, NULL, __remove_child);
if (scsi_is_target_device(idev))
__scsi_remove_target(to_scsi_target(idev));
}
put_device(rdev); put_device(rdev);
} }
EXPORT_SYMBOL(scsi_remove_target); EXPORT_SYMBOL(scsi_remove_target);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment