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

Commit ee92efe4 authored by Bart Van Assche's avatar Bart Van Assche Committed by Jason Gunthorpe
Browse files

IB/srp: Avoid that sg_reset -d ${srp_device} triggers an infinite loop



Use different loop variables for the inner and outer loop. This avoids
that an infinite loop occurs if there are more RDMA channels than
target->req_ring_size.

Fixes: d92c0da7 ("IB/srp: Add multichannel support")
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 5fe23f26
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -2951,7 +2951,7 @@ static int srp_reset_device(struct scsi_cmnd *scmnd)
{
	struct srp_target_port *target = host_to_target(scmnd->device->host);
	struct srp_rdma_ch *ch;
	int i;
	int i, j;
	u8 status;

	shost_printk(KERN_ERR, target->scsi_host, "SRP reset_device called\n");
@@ -2965,8 +2965,8 @@ static int srp_reset_device(struct scsi_cmnd *scmnd)

	for (i = 0; i < target->ch_count; i++) {
		ch = &target->ch[i];
		for (i = 0; i < target->req_ring_size; ++i) {
			struct srp_request *req = &ch->req_ring[i];
		for (j = 0; j < target->req_ring_size; ++j) {
			struct srp_request *req = &ch->req_ring[j];

			srp_finish_req(ch, req, scmnd->device, DID_RESET << 16);
		}