IB/srp: Fix list corruption/oops on module reload
David Dillow [Thu, 3 Jan 2008 18:25:27 +0000 (10:25 -0800)]
Add a missing call to srp_remove_host() in srp_remove_one() so that we
don't leak SRP transport class list entries.

Tested-by: David Dillow <dillowda@ornl.gov>
Acked-by: FUJITA Tomonori <tomof@acm.org>
Signed-off-by: Roland Dreier <rolandd@cisco.com>

drivers/infiniband/ulp/srp/ib_srp.c

index 950228f..77e8b90 100644 (file)
@@ -2054,6 +2054,7 @@ static void srp_remove_one(struct ib_device *device)
                list_for_each_entry_safe(target, tmp_target,
                                         &host->target_list, list) {
                        scsi_remove_host(target->scsi_host);
+                       srp_remove_host(target->scsi_host);
                        srp_disconnect_target(target);
                        ib_destroy_cm_id(target->cm_id);
                        srp_free_target_ib(target);