OSDN Git Service

of: unittest: fix warning on PowerPC frame size warning
authorJim Quinlan <jim2101024@gmail.com>
Fri, 10 Dec 2021 18:46:35 +0000 (13:46 -0500)
committerRob Herring <robh@kernel.org>
Wed, 15 Dec 2021 22:37:02 +0000 (16:37 -0600)
The struct device variable "dev_bogus" was triggering this warning
on a PowerPC build:

    drivers/of/unittest.c: In function 'of_unittest_dma_ranges_one.constprop':
    [...] >> The frame size of 1424 bytes is larger than 1024 bytes
             [-Wframe-larger-than=]

This variable is now dynamically allocated.

Fixes: e0d072782c734 ("dma-mapping: introduce DMA range map, supplanting dma_pfn_offset")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Frank Rowand <frank.rowand@sony.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20211210184636.7273-2-jim2101024@gmail.com
drivers/of/unittest.c

index 481ba86..02c5cd0 100644 (file)
@@ -911,11 +911,18 @@ static void __init of_unittest_dma_ranges_one(const char *path,
        if (!rc) {
                phys_addr_t     paddr;
                dma_addr_t      dma_addr;
-               struct device   dev_bogus;
+               struct device   *dev_bogus;
 
-               dev_bogus.dma_range_map = map;
-               paddr = dma_to_phys(&dev_bogus, expect_dma_addr);
-               dma_addr = phys_to_dma(&dev_bogus, expect_paddr);
+               dev_bogus = kzalloc(sizeof(struct device), GFP_KERNEL);
+               if (!dev_bogus) {
+                       unittest(0, "kzalloc() failed\n");
+                       kfree(map);
+                       return;
+               }
+
+               dev_bogus->dma_range_map = map;
+               paddr = dma_to_phys(dev_bogus, expect_dma_addr);
+               dma_addr = phys_to_dma(dev_bogus, expect_paddr);
 
                unittest(paddr == expect_paddr,
                         "of_dma_get_range: wrong phys addr %pap (expecting %llx) on node %pOF\n",
@@ -925,6 +932,7 @@ static void __init of_unittest_dma_ranges_one(const char *path,
                         &dma_addr, expect_dma_addr, np);
 
                kfree(map);
+               kfree(dev_bogus);
        }
        of_node_put(np);
 #endif