mptsas: fix checks for dma mapping errors
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Fri, 15 Apr 2016 23:12:29 +0000 (02:12 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 29 Apr 2016 23:01:34 +0000 (19:01 -0400)
mptsas_smp_handler() checks for dma mapping errors by comparison
returned address with zero, while pci_dma_mapping_error() should be
used.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Acked-by: Sathya Prakash Veerichetty <sathya.prakash@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/message/fusion/mptsas.c

index 7ebccfa8072a7ff8075ab2e71197713afc397dcf..7ee1667acde44b69fd309e5fe9835ed679bd6791 100644 (file)
@@ -2281,7 +2281,7 @@ static int mptsas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
 
        dma_addr_out = pci_map_single(ioc->pcidev, bio_data(req->bio),
                                      blk_rq_bytes(req), PCI_DMA_BIDIRECTIONAL);
-       if (!dma_addr_out)
+       if (pci_dma_mapping_error(ioc->pcidev, dma_addr_out))
                goto put_mf;
        ioc->add_sge(psge, flagsLength, dma_addr_out);
        psge += ioc->SGE_size;
@@ -2296,7 +2296,7 @@ static int mptsas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
        flagsLength |= blk_rq_bytes(rsp) + 4;
        dma_addr_in =  pci_map_single(ioc->pcidev, bio_data(rsp->bio),
                                      blk_rq_bytes(rsp), PCI_DMA_BIDIRECTIONAL);
-       if (!dma_addr_in)
+       if (pci_dma_mapping_error(ioc->pcidev, dma_addr_in))
                goto unmap;
        ioc->add_sge(psge, flagsLength, dma_addr_in);