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) | |||
| 2672 | sufficient_dsds: | 2672 | sufficient_dsds: |
| 2673 | req_cnt = 1; | 2673 | req_cnt = 1; |
| 2674 | 2674 | ||
| 2675 | if (req->cnt < (req_cnt + 2)) { | ||
| 2676 | cnt = (uint16_t)RD_REG_DWORD_RELAXED( | ||
| 2677 | ®->req_q_out[0]); | ||
| 2678 | if (req->ring_index < cnt) | ||
| 2679 | req->cnt = cnt - req->ring_index; | ||
| 2680 | else | ||
| 2681 | req->cnt = req->length - | ||
| 2682 | (req->ring_index - cnt); | ||
| 2683 | } | ||
| 2684 | |||
| 2685 | if (req->cnt < (req_cnt + 2)) | ||
| 2686 | goto queuing_error; | ||
| 2687 | |||
| 2675 | ctx = sp->ctx = mempool_alloc(ha->ctx_mempool, GFP_ATOMIC); | 2688 | ctx = sp->ctx = mempool_alloc(ha->ctx_mempool, GFP_ATOMIC); |
| 2676 | if (!sp->ctx) { | 2689 | if (!sp->ctx) { |
| 2677 | DEBUG(printk(KERN_INFO | 2690 | DEBUG(printk(KERN_INFO |
