Message ID | 20221116094147.221640-1-pkosyh@yandex.ru (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | scsi: myrs: check return value of dma_alloc_coherent() instead of using dma_mapping_error() | expand |
On 16.11.2022 12:41, Peter Kosyh wrote: > dma_alloc_coherent() may leave third parameter uninitialized. So > it is not safe to use dma_mapping_error() without checking return > value of dma_alloc_coherent(). > > Check the return value of dma_alloc_coherent() to detect > an error. > > Found by Linux Verification Center (linuxtesting.org) with SVACE. > > Signed-off-by: Peter Kosyh <pkosyh@yandex.ru> > --- > drivers/scsi/myrs.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/myrs.c b/drivers/scsi/myrs.c > index 7eb8c39da366..1811c1a6385b 100644 > --- a/drivers/scsi/myrs.c > +++ b/drivers/scsi/myrs.c > @@ -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 */ > mbox = dma_alloc_coherent(&pdev->dev, sizeof(union myrs_cmd_mbox), > &mbox_addr, GFP_KERNEL); > - if (dma_mapping_error(&pdev->dev, mbox_addr)) > + if (!mbox) > return false; > > /* These are the base addresses for the command memory mailbox array */ > cs->cmd_mbox_size = MYRS_MAX_CMD_MBOX * sizeof(union myrs_cmd_mbox); > cmd_mbox = dma_alloc_coherent(&pdev->dev, cs->cmd_mbox_size, > &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"); > goto out_free; > } > Reviewed-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Also you may want to add Fixes: 77266186397c ("scsi: myrs: Add Mylex RAID controller (SCSI interface)") -- Alexey
diff --git a/drivers/scsi/myrs.c b/drivers/scsi/myrs.c index 7eb8c39da366..1811c1a6385b 100644 --- a/drivers/scsi/myrs.c +++ b/drivers/scsi/myrs.c @@ -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 */ mbox = dma_alloc_coherent(&pdev->dev, sizeof(union myrs_cmd_mbox), &mbox_addr, GFP_KERNEL); - if (dma_mapping_error(&pdev->dev, mbox_addr)) + if (!mbox) return false; /* These are the base addresses for the command memory mailbox array */ cs->cmd_mbox_size = MYRS_MAX_CMD_MBOX * sizeof(union myrs_cmd_mbox); cmd_mbox = dma_alloc_coherent(&pdev->dev, cs->cmd_mbox_size, &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"); goto out_free; }
dma_alloc_coherent() may leave third parameter uninitialized. So it is not safe to use dma_mapping_error() without checking return value of dma_alloc_coherent(). Check the return value of dma_alloc_coherent() to detect an error. Found by Linux Verification Center (linuxtesting.org) with SVACE. Signed-off-by: Peter Kosyh <pkosyh@yandex.ru> --- drivers/scsi/myrs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)