OSDN Git Service

scsi: lpfc: Fix improper flag check for IO type
authorJames Smart <jsmart2021@gmail.com>
Wed, 18 Dec 2019 23:58:07 +0000 (15:58 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 21 Dec 2019 18:42:42 +0000 (13:42 -0500)
Current driver code looks at iocb types and uses a "==" comparison on the
flags to determine type. If another flag were set, it would disrupt the
comparison.

Fix by converting to a bitwise & operation.

Link: https://lore.kernel.org/r/20191218235808.31922-10-jsmart2021@gmail.com
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_scsi.c

index b138d9f..2c7e0b2 100644 (file)
@@ -481,7 +481,7 @@ lpfc_sli4_vport_delete_fcp_xri_aborted(struct lpfc_vport *vport)
                spin_lock(&qp->abts_io_buf_list_lock);
                list_for_each_entry_safe(psb, next_psb,
                                         &qp->lpfc_abts_io_buf_list, list) {
-                       if (psb->cur_iocbq.iocb_flag == LPFC_IO_NVME)
+                       if (psb->cur_iocbq.iocb_flag & LPFC_IO_NVME)
                                continue;
 
                        if (psb->rdata && psb->rdata->pnode &&
@@ -528,7 +528,7 @@ lpfc_sli4_io_xri_aborted(struct lpfc_hba *phba,
                        list_del_init(&psb->list);
                        psb->flags &= ~LPFC_SBUF_XBUSY;
                        psb->status = IOSTAT_SUCCESS;
-                       if (psb->cur_iocbq.iocb_flag == LPFC_IO_NVME) {
+                       if (psb->cur_iocbq.iocb_flag & LPFC_IO_NVME) {
                                qp->abts_nvme_io_bufs--;
                                spin_unlock(&qp->abts_io_buf_list_lock);
                                spin_unlock_irqrestore(&phba->hbalock, iflag);