diff options
| author | Hannes Reinecke <hare@suse.de> | 2019-02-18 02:34:26 -0500 |
|---|---|---|
| committer | Martin K. Petersen <martin.petersen@oracle.com> | 2019-02-25 21:44:40 -0500 |
| commit | 3e344b6cec8e675e692ffddf9977c52638337006 (patch) | |
| tree | 9a631529608ce1b01008fc6a59a64914f2d4cab2 /drivers | |
| parent | d9a00459effc30f6de2cdd887b64f15c6c54ae71 (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.c | 10 |
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 | } |
