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

Commit fb49c8bb authored by Bart Van Assche's avatar Bart Van Assche Committed by Doug Ledford
Browse files

IB/srp: Remove an extraneous scsi_host_put() from an error path



Fix a scsi_get_host() / scsi_host_put() imbalance in the error
path of srp_create_target(). See also patch "IB/srp: Avoid that
I/O hangs due to a cable pull during LUN scanning" (commit ID
34aa654e).

Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: default avatarSagi Grimberg <sagig@mellanox.com>
Cc: Sebastian Parschauer <sebastian.riemer@profitbricks.com>
Cc: <stable@vger.kernel.org> #v3.19
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 535fb906
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -3172,11 +3172,11 @@ static ssize_t srp_create_target(struct device *dev,

	ret = srp_parse_options(buf, target);
	if (ret)
		goto err;
		goto out;

	ret = scsi_init_shared_tag_map(target_host, target_host->can_queue);
	if (ret)
		goto err;
		goto out;

	target->req_ring_size = target->queue_size - SRP_TSK_MGMT_SQ_SIZE;

@@ -3187,7 +3187,7 @@ static ssize_t srp_create_target(struct device *dev,
			     be64_to_cpu(target->ioc_guid),
			     be64_to_cpu(target->initiator_ext));
		ret = -EEXIST;
		goto err;
		goto out;
	}

	if (!srp_dev->has_fmr && !srp_dev->has_fr && !target->allow_ext_sg &&
@@ -3208,7 +3208,7 @@ static ssize_t srp_create_target(struct device *dev,
	spin_lock_init(&target->lock);
	ret = ib_query_gid(ibdev, host->port, 0, &target->sgid);
	if (ret)
		goto err;
		goto out;

	ret = -ENOMEM;
	target->ch_count = max_t(unsigned, num_online_nodes(),
@@ -3219,7 +3219,7 @@ static ssize_t srp_create_target(struct device *dev,
	target->ch = kcalloc(target->ch_count, sizeof(*target->ch),
			     GFP_KERNEL);
	if (!target->ch)
		goto err;
		goto out;

	node_idx = 0;
	for_each_online_node(node) {
@@ -3315,9 +3315,6 @@ static ssize_t srp_create_target(struct device *dev,
	}

	kfree(target->ch);

err:
	scsi_host_put(target_host);
	goto out;
}