Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20b1e674 authored by Patrick Mochel's avatar Patrick Mochel Committed by Greg Kroah-Hartman
Browse files

[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
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -669,6 +669,13 @@ void __scsi_remove_target(struct scsi_target *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
 * @dev: generic starget or parent of generic stargets to be removed
@@ -679,7 +686,7 @@ void __scsi_remove_target(struct scsi_target *starget)
 */
void scsi_remove_target(struct device *dev)
{
	struct device *rdev, *idev, *next;
	struct device *rdev;

	if (scsi_is_target_device(dev)) {
		__scsi_remove_target(to_scsi_target(dev));
@@ -687,10 +694,7 @@ void scsi_remove_target(struct device *dev)
	}

	rdev = get_device(dev);
	list_for_each_entry_safe(idev, next, &dev->children, node) {
		if (scsi_is_target_device(idev))
			__scsi_remove_target(to_scsi_target(idev));
	}
	device_for_each_child(dev, NULL, __remove_child);
	put_device(rdev);
}
EXPORT_SYMBOL(scsi_remove_target);