]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
dmaengine: cirrus: check that output may be truncated
authorAlexander Sverdlin <alexander.sverdlin@gmail.com>
Fri, 20 Sep 2024 23:21:55 +0000 (01:21 +0200)
committerArnd Bergmann <arnd@arndb.de>
Fri, 11 Oct 2024 09:55:47 +0000 (09:55 +0000)
ep93xx_dma.c: In function 'ep93xx_dma_of_probe':
ep93xx_dma.c:1409:74: warning: '%u' directive output may be truncated
       writing between 1 and 8 bytes into a region
       of size 2 [-Wformat-truncation=]
snprintf(dma_clk_name, sizeof(dma_clk_name), "m2p%u", i);
                                                 ^~

Fixes: d7333f9d3377 ("dmaengine: cirrus: use snprintf() to calm down gcc 13.3.0")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202409172024.pU8U5beA-lkp@intel.com/
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Link: https://lore.kernel.org/r/2bf9c37aad8f085839f9c63104f7275742f51945.camel@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
drivers/dma/ep93xx_dma.c

index 7989bc3db20986533afdbbee60311dbcb7066227..6b98a23e333248861725a4d897ed083536cd0011 100644 (file)
@@ -1391,6 +1391,7 @@ static struct ep93xx_dma_engine *ep93xx_dma_of_probe(struct platform_device *pde
        INIT_LIST_HEAD(&dma_dev->channels);
        for (i = 0; i < edma->num_channels; i++) {
                struct ep93xx_dma_chan *edmac = &edma->channels[i];
+               int len;
 
                edmac->chan.device = dma_dev;
                edmac->regs = devm_platform_ioremap_resource(pdev, i);
@@ -1404,9 +1405,11 @@ static struct ep93xx_dma_engine *ep93xx_dma_of_probe(struct platform_device *pde
                edmac->edma = edma;
 
                if (edma->m2m)
-                       snprintf(dma_clk_name, sizeof(dma_clk_name), "m2m%u", i);
+                       len = snprintf(dma_clk_name, sizeof(dma_clk_name), "m2m%u", i);
                else
-                       snprintf(dma_clk_name, sizeof(dma_clk_name), "m2p%u", i);
+                       len = snprintf(dma_clk_name, sizeof(dma_clk_name), "m2p%u", i);
+               if (len >= sizeof(dma_clk_name))
+                       return ERR_PTR(-ENOBUFS);
 
                edmac->clk = devm_clk_get(dev, dma_clk_name);
                if (IS_ERR(edmac->clk)) {