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",
                         &dma_addr, expect_dma_addr, np);
 
                kfree(map);
+               kfree(dev_bogus);
        }
        of_node_put(np);
 #endif