Re: [PATCH v3 05/11] dmaengine: switchtec-dma: make switchtec_dma_chans_release() void

[email protected] Mon, 27 Jul 2026 19:15:19 +0000
Newsgroups org.kernel.vger.dmaengine,org.kernel.vger.linux-pci
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] This problem wasn't introduced by this patch, but there is a missing NULL check for ioremap() in switchtec_dma_create().
--

--- Patch [5]: [PATCH v3 05/11] dmaengine: switchtec-dma: make switchtec_dma_chans_release() void ---
commit a207649bc05f965ee7cc3627c9764631e52253cb
Author: Logan Gunthorpe <[email protected]>

dmaengine: switchtec-dma: make switchtec_dma_chans_release() void

This commit updates the return type of switchtec_dma_chans_release() to void,
as the function always returned 0 and its return value was never checked by
callers.

> diff --git a/drivers/dma/switchtec_dma.c b/drivers/dma/switchtec_dma.c
> index 13efd4189bbb4..c752a1b05871d 100644
> --- a/drivers/dma/switchtec_dma.c
> +++ b/drivers/dma/switchtec_dma.c
> @@ -1165,15 +1165,13 @@ static int switchtec_dma_chan_free(struct pci_dev *pdev,

[ ... ]

> -static int switchtec_dma_chans_release(struct pci_dev *pdev,
> -				       struct switchtec_dma_dev *swdma_dev)
> +static void switchtec_dma_chans_release(struct pci_dev *pdev,
> +					struct switchtec_dma_dev *swdma_dev)
>  {
>  	int i;
>  
>  	for (i = 0; i < swdma_dev->chan_cnt; i++)
>  		switchtec_dma_chan_free(pdev, swdma_dev->swdma_chans[i]);
> -
> -	return 0;
>  }

[Severity: High]
This is a pre-existing issue, but while reviewing this file I noticed a
missing NULL check for ioremap() in switchtec_dma_create():

	swdma_dev->bar = ioremap(pci_resource_start(pdev, 0),
				 pci_resource_len(pdev, 0));

	RCU_INIT_POINTER(swdma_dev->pdev, pdev);

	nr_vecs = pci_msix_vec_count(pdev);
	rc = pci_alloc_irq_vectors(pdev, nr_vecs, nr_vecs, PCI_IRQ_MSIX);
	if (rc < 0)
		goto err_exit;

	irq = readw(swdma_dev->bar + SWITCHTEC_REG_CHAN_STS_VEC);

If ioremap() fails during device probe and returns NULL, does this cause a
kernel panic when swdma_dev->bar is dereferenced by readw()?

-- 
Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=5