mirror of https://github.com/torvalds/linux.git
scsi: myrs: Fix dma_alloc_coherent() error check
Check for NULL return value with dma_alloc_coherent(), because DMA
address is not always set by dma_alloc_coherent() on failure.
Fixes: 7726618639 ("scsi: myrs: Add Mylex RAID controller (SCSI interface)")
Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
Link: https://lore.kernel.org/r/20250725083112.43975-2-fourier.thomas@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
e79aa10e28
commit
edb35b1ffc
|
|
@ -498,14 +498,14 @@ static bool myrs_enable_mmio_mbox(struct myrs_hba *cs,
|
||||||
/* Temporary dma mapping, used only in the scope of this function */
|
/* Temporary dma mapping, used only in the scope of this function */
|
||||||
mbox = dma_alloc_coherent(&pdev->dev, sizeof(union myrs_cmd_mbox),
|
mbox = dma_alloc_coherent(&pdev->dev, sizeof(union myrs_cmd_mbox),
|
||||||
&mbox_addr, GFP_KERNEL);
|
&mbox_addr, GFP_KERNEL);
|
||||||
if (dma_mapping_error(&pdev->dev, mbox_addr))
|
if (!mbox)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* These are the base addresses for the command memory mailbox array */
|
/* These are the base addresses for the command memory mailbox array */
|
||||||
cs->cmd_mbox_size = MYRS_MAX_CMD_MBOX * sizeof(union myrs_cmd_mbox);
|
cs->cmd_mbox_size = MYRS_MAX_CMD_MBOX * sizeof(union myrs_cmd_mbox);
|
||||||
cmd_mbox = dma_alloc_coherent(&pdev->dev, cs->cmd_mbox_size,
|
cmd_mbox = dma_alloc_coherent(&pdev->dev, cs->cmd_mbox_size,
|
||||||
&cs->cmd_mbox_addr, GFP_KERNEL);
|
&cs->cmd_mbox_addr, GFP_KERNEL);
|
||||||
if (dma_mapping_error(&pdev->dev, cs->cmd_mbox_addr)) {
|
if (!cmd_mbox) {
|
||||||
dev_err(&pdev->dev, "Failed to map command mailbox\n");
|
dev_err(&pdev->dev, "Failed to map command mailbox\n");
|
||||||
goto out_free;
|
goto out_free;
|
||||||
}
|
}
|
||||||
|
|
@ -520,7 +520,7 @@ static bool myrs_enable_mmio_mbox(struct myrs_hba *cs,
|
||||||
cs->stat_mbox_size = MYRS_MAX_STAT_MBOX * sizeof(struct myrs_stat_mbox);
|
cs->stat_mbox_size = MYRS_MAX_STAT_MBOX * sizeof(struct myrs_stat_mbox);
|
||||||
stat_mbox = dma_alloc_coherent(&pdev->dev, cs->stat_mbox_size,
|
stat_mbox = dma_alloc_coherent(&pdev->dev, cs->stat_mbox_size,
|
||||||
&cs->stat_mbox_addr, GFP_KERNEL);
|
&cs->stat_mbox_addr, GFP_KERNEL);
|
||||||
if (dma_mapping_error(&pdev->dev, cs->stat_mbox_addr)) {
|
if (!stat_mbox) {
|
||||||
dev_err(&pdev->dev, "Failed to map status mailbox\n");
|
dev_err(&pdev->dev, "Failed to map status mailbox\n");
|
||||||
goto out_free;
|
goto out_free;
|
||||||
}
|
}
|
||||||
|
|
@ -533,7 +533,7 @@ static bool myrs_enable_mmio_mbox(struct myrs_hba *cs,
|
||||||
cs->fwstat_buf = dma_alloc_coherent(&pdev->dev,
|
cs->fwstat_buf = dma_alloc_coherent(&pdev->dev,
|
||||||
sizeof(struct myrs_fwstat),
|
sizeof(struct myrs_fwstat),
|
||||||
&cs->fwstat_addr, GFP_KERNEL);
|
&cs->fwstat_addr, GFP_KERNEL);
|
||||||
if (dma_mapping_error(&pdev->dev, cs->fwstat_addr)) {
|
if (!cs->fwstat_buf) {
|
||||||
dev_err(&pdev->dev, "Failed to map firmware health buffer\n");
|
dev_err(&pdev->dev, "Failed to map firmware health buffer\n");
|
||||||
cs->fwstat_buf = NULL;
|
cs->fwstat_buf = NULL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue