scsi: lpfc: Use after free in lpfc_rq_buf_free()
The error message dereferences "rqb_entry" so we need to print it first
and then free the buffer.
Fixes: 6c621a2229
("scsi: lpfc: Separate NVMET RQ buffer posting from IO resources SGL/iocbq/context")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
c2e8fbf908
commit
9816ef6ecb
@ -753,12 +753,12 @@ lpfc_rq_buf_free(struct lpfc_hba *phba, struct lpfc_dmabuf *mp)
|
|||||||
drqe.address_hi = putPaddrHigh(rqb_entry->dbuf.phys);
|
drqe.address_hi = putPaddrHigh(rqb_entry->dbuf.phys);
|
||||||
rc = lpfc_sli4_rq_put(rqb_entry->hrq, rqb_entry->drq, &hrqe, &drqe);
|
rc = lpfc_sli4_rq_put(rqb_entry->hrq, rqb_entry->drq, &hrqe, &drqe);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
(rqbp->rqb_free_buffer)(phba, rqb_entry);
|
|
||||||
lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
|
lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
|
||||||
"6409 Cannot post to RQ %d: %x %x\n",
|
"6409 Cannot post to RQ %d: %x %x\n",
|
||||||
rqb_entry->hrq->queue_id,
|
rqb_entry->hrq->queue_id,
|
||||||
rqb_entry->hrq->host_index,
|
rqb_entry->hrq->host_index,
|
||||||
rqb_entry->hrq->hba_index);
|
rqb_entry->hrq->hba_index);
|
||||||
|
(rqbp->rqb_free_buffer)(phba, rqb_entry);
|
||||||
} else {
|
} else {
|
||||||
list_add_tail(&rqb_entry->hbuf.list, &rqbp->rqb_buffer_list);
|
list_add_tail(&rqb_entry->hbuf.list, &rqbp->rqb_buffer_list);
|
||||||
rqbp->buffer_count++;
|
rqbp->buffer_count++;
|
||||||
|
Loading…
Reference in New Issue
Block a user