Re: [PATCH V2] dmaengine: Add NULL check in lpc18xx_dmamux_reserve()

From: Vladimir Zapolskiy
Date: Mon Jun 16 2025 - 11:24:15 EST


On 6/16/25 13:44, Charles Han wrote:
The function of_find_device_by_node() may return NULL if the device
node is not found or CONFIG_OF not defined.

DMA_OF depends on OF, and the driver depends on OF as it's stated
in the drivers/dma/Kconfig, so this is not an issue.

Next, is it possible here to get of_find_device_by_node() returning
NULL? I don't think so, and then it's unclear which problem is supposed
to be fixed by this change, and therefore the change should be dropped.

Add check whether the return value is NULL and set the error code
to be returned as -ENODEV.

Fixes: e5f4ae84be74 ("dmaengine: add driver for lpc18xx dmamux")
Signed-off-by: Charles Han <hanchunchao@xxxxxxxxxx>
---
drivers/dma/lpc18xx-dmamux.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/lpc18xx-dmamux.c b/drivers/dma/lpc18xx-dmamux.c
index 2b6436f4b193..f61183a1d0ba 100644
--- a/drivers/dma/lpc18xx-dmamux.c
+++ b/drivers/dma/lpc18xx-dmamux.c
@@ -53,11 +53,17 @@ static void lpc18xx_dmamux_free(struct device *dev, void *route_data)
static void *lpc18xx_dmamux_reserve(struct of_phandle_args *dma_spec,
struct of_dma *ofdma)
{
- struct platform_device *pdev = of_find_device_by_node(ofdma->of_node);
- struct lpc18xx_dmamux_data *dmamux = platform_get_drvdata(pdev);
+ struct platform_device *pdev;
+ struct lpc18xx_dmamux_data *dmamux;

The list of declared/initialized local variables is deliberately sorted
in so called reverse Christmas tree order, please keep the sorting order.

unsigned long flags;
unsigned mux;
+ pdev = of_find_device_by_node(ofdma->of_node);
+ if (!pdev)
+ return ERR_PTR(-ENODEV);
+
+ dmamux = platform_get_drvdata(pdev);
+
if (dma_spec->args_count != 3) {
dev_err(&pdev->dev, "invalid number of dma mux args\n");
return ERR_PTR(-EINVAL);

--
Best wishes,
Vladimir