[bug report] mtd: rawnand: cadence: use dma_map_resource for sdma address
Rabara, Niravkumar L
niravkumar.l.rabara at intel.com
Wed Feb 12 23:33:49 PST 2025
Hi Dan,
> -----Original Message-----
> From: Dan Carpenter <dan.carpenter at linaro.org>
> Sent: Thursday, 13 February, 2025 3:13 PM
> To: Rabara, Niravkumar L <niravkumar.l.rabara at intel.com>
> Cc: linux-mtd at lists.infradead.org
> Subject: [bug report] mtd: rawnand: cadence: use dma_map_resource for
> sdma address
>
> Hello Niravkumar L Rabara,
>
> This is a semi-automatic email about new static checker warnings.
>
> Commit d76d22b5096c ("mtd: rawnand: cadence: use dma_map_resource for
> sdma address") from Feb 10, 2025, leads to the following Smatch
> complaint:
>
> drivers/mtd/nand/raw/cadence-nand-controller.c:2982
> cadence_nand_remove()
> warn: variable dereferenced before check 'cdns_ctrl->dmac' (see line 2975)
>
> drivers/mtd/nand/raw/cadence-nand-controller.c
> 2974 cadence_nand_chips_cleanup(cdns_ctrl);
> 2975 dma_unmap_resource(cdns_ctrl->dmac->device->dev,
> cdns_ctrl->io.iova_dma,
> ^^^^^^^^^^^^^^^ The patch adds an unchecked
> dereference
>
> 2976 cdns_ctrl->io.size, DMA_BIDIRECTIONAL, 0);
> 2977 cadence_nand_irq_cleanup(cdns_ctrl->irq, cdns_ctrl);
> 2978 kfree(cdns_ctrl->buf);
> 2979 dma_free_coherent(cdns_ctrl->dev, sizeof(struct
> cadence_nand_cdma_desc),
> 2980 cdns_ctrl->cdma_desc, cdns_ctrl-
> >dma_cdma_desc);
> 2981
> 2982 if (cdns_ctrl->dmac)
> ^^^^^^^^^^^^^^^
> But the old code assumed ->dmac could be NULL
>
> 2983 dma_release_channel(cdns_ctrl->dmac);
> 2984 }
>
I missed this.
I will add a NULL check before the dma_unmap_resource()
if (cdns_ctrl->dmac)
dma_unmap_resource(cdns_ctrl->dmac->device->dev, cdns_ctrl->io.iova_dma,
cdns_ctrl->io.size, DMA_BIDIRECTIONAL, 0);
Shall I submit a new version of this patch?
Do I need to include any additional tag or info?
Thanks,
Nirav
More information about the linux-mtd
mailing list