Skip to content

Commit 5369887

Browse files
Vikas ChaudharyJames Bottomley
authored andcommitted
[SCSI] qla4xxx: correct use of cmd->host_scribble
used cmd->host_scribble to store iocb command handle. Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com> Signed-off-by: Ravi Anand <ravi.anand@qlogic.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
1 parent 821d6e5 commit 5369887

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

drivers/scsi/qla4xxx/ql4_def.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@
148148

149149
#define MAX_RESET_HA_RETRIES 2
150150

151+
#define CMD_SP(Cmnd) ((Cmnd)->SCp.ptr)
152+
151153
/*
152154
* SCSI Request Block structure (srb) that is placed
153155
* on cmd->SCp location of every I/O [We have 22 bytes available]

drivers/scsi/qla4xxx/ql4_iocb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ int qla4xxx_send_command_to_isp(struct scsi_qla_host *ha, struct srb * srb)
299299
qla4xxx_build_scsi_iocbs(srb, cmd_entry, tot_dsds);
300300
wmb();
301301

302-
srb->cmd->host_scribble = (unsigned char *)srb;
302+
srb->cmd->host_scribble = (unsigned char *)(unsigned long)index;
303303

304304
/* update counters */
305305
srb->state = SRB_ACTIVE_STATE;

drivers/scsi/qla4xxx/ql4_os.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ static struct srb* qla4xxx_get_new_srb(struct scsi_qla_host *ha,
389389
srb->ddb = ddb_entry;
390390
srb->cmd = cmd;
391391
srb->flags = 0;
392-
cmd->SCp.ptr = (void *)srb;
392+
CMD_SP(cmd) = (void *)srb;
393393
cmd->scsi_done = done;
394394

395395
return srb;
@@ -403,7 +403,7 @@ static void qla4xxx_srb_free_dma(struct scsi_qla_host *ha, struct srb *srb)
403403
scsi_dma_unmap(cmd);
404404
srb->flags &= ~SRB_DMA_VALID;
405405
}
406-
cmd->SCp.ptr = NULL;
406+
CMD_SP(cmd) = NULL;
407407
}
408408

409409
void qla4xxx_srb_compl(struct scsi_qla_host *ha, struct srb *srb)
@@ -891,7 +891,6 @@ static void qla4xxx_flush_active_srbs(struct scsi_qla_host *ha)
891891
}
892892
}
893893
spin_unlock_irqrestore(&ha->hardware_lock, flags);
894-
895894
}
896895

897896
/**
@@ -1479,20 +1478,23 @@ static void qla4xxx_slave_destroy(struct scsi_device *sdev)
14791478
struct srb * qla4xxx_del_from_active_array(struct scsi_qla_host *ha, uint32_t index)
14801479
{
14811480
struct srb *srb = NULL;
1482-
struct scsi_cmnd *cmd;
1481+
struct scsi_cmnd *cmd = NULL;
14831482

1484-
if (!(cmd = scsi_host_find_tag(ha->host, index)))
1483+
cmd = scsi_host_find_tag(ha->host, index);
1484+
if (!cmd)
14851485
return srb;
14861486

1487-
if (!(srb = (struct srb *)cmd->host_scribble))
1487+
srb = (struct srb *)CMD_SP(cmd);
1488+
if (!srb)
14881489
return srb;
14891490

14901491
/* update counters */
14911492
if (srb->flags & SRB_DMA_VALID) {
14921493
ha->req_q_count += srb->iocb_cnt;
14931494
ha->iocb_cnt -= srb->iocb_cnt;
14941495
if (srb->cmd)
1495-
srb->cmd->host_scribble = NULL;
1496+
srb->cmd->host_scribble =
1497+
(unsigned char *)(unsigned long) MAX_SRBS;
14961498
}
14971499
return srb;
14981500
}
@@ -1514,7 +1516,7 @@ static int qla4xxx_eh_wait_on_command(struct scsi_qla_host *ha,
15141516

15151517
do {
15161518
/* Checking to see if its returned to OS */
1517-
rp = (struct srb *) cmd->SCp.ptr;
1519+
rp = (struct srb *) CMD_SP(cmd);
15181520
if (rp == NULL) {
15191521
done++;
15201522
break;

0 commit comments

Comments
 (0)