diff options
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_nx.c | 13 | 
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_nx.c b/drivers/scsi/qla2xxx/qla_nx.c index ad290dc9ba35..0a71cc71eab2 100644 --- a/drivers/scsi/qla2xxx/qla_nx.c +++ b/drivers/scsi/qla2xxx/qla_nx.c @@ -2672,6 +2672,19 @@ qla82xx_start_scsi(srb_t *sp)  sufficient_dsds:  		req_cnt = 1; +		if (req->cnt < (req_cnt + 2)) { +			cnt = (uint16_t)RD_REG_DWORD_RELAXED( +				®->req_q_out[0]); +			if (req->ring_index < cnt) +				req->cnt = cnt - req->ring_index; +			else +				req->cnt = req->length - +					(req->ring_index - cnt); +		} + +		if (req->cnt < (req_cnt + 2)) +			goto queuing_error; +  		ctx = sp->ctx = mempool_alloc(ha->ctx_mempool, GFP_ATOMIC);  		if (!sp->ctx) {  			DEBUG(printk(KERN_INFO  | 
