|
@@ -528,11 +528,13 @@ static void srp_remove_target(struct srp_target_port *target)
|
|
|
WARN_ON_ONCE(target->state != SRP_TARGET_REMOVED);
|
|
|
|
|
|
srp_del_scsi_host_attr(target->scsi_host);
|
|
|
+ srp_rport_get(target->rport);
|
|
|
srp_remove_host(target->scsi_host);
|
|
|
scsi_remove_host(target->scsi_host);
|
|
|
srp_disconnect_target(target);
|
|
|
ib_destroy_cm_id(target->cm_id);
|
|
|
srp_free_target_ib(target);
|
|
|
+ srp_rport_put(target->rport);
|
|
|
srp_free_req_data(target);
|
|
|
scsi_host_put(target->scsi_host);
|
|
|
}
|
|
@@ -2004,6 +2006,7 @@ static int srp_add_target(struct srp_host *host, struct srp_target_port *target)
|
|
|
}
|
|
|
|
|
|
rport->lld_data = target;
|
|
|
+ target->rport = rport;
|
|
|
|
|
|
spin_lock(&host->target_lock);
|
|
|
list_add_tail(&target->list, &host->target_list);
|