aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2019-02-18 02:34:26 -0500
committerMartin K. Petersen <martin.petersen@oracle.com>2019-02-25 21:44:40 -0500
commit3e344b6cec8e675e692ffddf9977c52638337006 (patch)
tree9a631529608ce1b01008fc6a59a64914f2d4cab2 /drivers
parentd9a00459effc30f6de2cdd887b64f15c6c54ae71 (diff)
scsi: hptiop: fix calls to dma_set_mask()
The change to use dma_set_mask() incorrectly made a second call with the 32 bit DMA mask value when the call with the 64 bit DMA mask value succeeded. Fixes: 453cd3700ca3 ("scsi: hptiop: use dma_set_mask") Cc: <stable@vger.kernel.org> Suggested-by: Ewan D. Milne <emilne@redhat.com> Signed-off-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ewan D. Milne <emilne@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/hptiop.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/scsi/hptiop.c b/drivers/scsi/hptiop.c
index 3eedfd4f8f57..251c084a6ff0 100644
--- a/drivers/scsi/hptiop.c
+++ b/drivers/scsi/hptiop.c
@@ -1292,6 +1292,7 @@ static int hptiop_probe(struct pci_dev *pcidev, const struct pci_device_id *id)
1292 dma_addr_t start_phy; 1292 dma_addr_t start_phy;
1293 void *start_virt; 1293 void *start_virt;
1294 u32 offset, i, req_size; 1294 u32 offset, i, req_size;
1295 int rc;
1295 1296
1296 dprintk("hptiop_probe(%p)\n", pcidev); 1297 dprintk("hptiop_probe(%p)\n", pcidev);
1297 1298
@@ -1308,9 +1309,12 @@ static int hptiop_probe(struct pci_dev *pcidev, const struct pci_device_id *id)
1308 1309
1309 /* Enable 64bit DMA if possible */ 1310 /* Enable 64bit DMA if possible */
1310 iop_ops = (struct hptiop_adapter_ops *)id->driver_data; 1311 iop_ops = (struct hptiop_adapter_ops *)id->driver_data;
1311 if (dma_set_mask(&pcidev->dev, 1312 rc = dma_set_mask(&pcidev->dev,
1312 DMA_BIT_MASK(iop_ops->hw_dma_bit_mask)) || 1313 DMA_BIT_MASK(iop_ops->hw_dma_bit_mask));
1313 dma_set_mask(&pcidev->dev, DMA_BIT_MASK(32))) { 1314 if (rc)
1315 rc = dma_set_mask(&pcidev->dev, DMA_BIT_MASK(32));
1316
1317 if (rc) {
1314 printk(KERN_ERR "hptiop: fail to set dma_mask\n"); 1318 printk(KERN_ERR "hptiop: fail to set dma_mask\n");
1315 goto disable_pci_device; 1319 goto disable_pci_device;
1316 } 1320 }