[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