[bug report] drm/nouveau/mmu/r535: initial support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]<

 



Hello Ben Skeggs,

The patch 5bf0257136a2: "drm/nouveau/mmu/r535: initial support" from
Sep 19, 2023 (linux-next), leads to the following Smatch static
checker warning:

	drivers/gpu/drm/nouveau/nvkm/subdev/bar/r535.c:171 r535_bar_new_()
	error: uninitialized symbol 'bar'.

drivers/gpu/drm/nouveau/nvkm/subdev/bar/r535.c
    147 int
    148 r535_bar_new_(const struct nvkm_bar_func *hw, struct nvkm_device *device,
    149               enum nvkm_subdev_type type, int inst, struct nvkm_bar **pbar)
    150 {
    151         struct nvkm_bar_func *rm;
    152         struct nvkm_bar *bar;
    153         int ret;
    154 
    155         if (!(rm = kzalloc(sizeof(*rm), GFP_KERNEL)))
    156                 return -ENOMEM;
    157 
    158         rm->dtor = r535_bar_dtor;
    159         rm->oneinit = hw->oneinit;
    160         rm->bar1.init = r535_bar_bar1_init;
    161         rm->bar1.fini = r535_bar_bar1_fini;
    162         rm->bar1.wait = r535_bar_bar1_wait;
    163         rm->bar1.vmm = hw->bar1.vmm;
    164         rm->bar2.init = r535_bar_bar2_init;
    165         rm->bar2.fini = r535_bar_bar2_fini;
    166         rm->bar2.wait = r535_bar_bar2_wait;
    167         rm->bar2.vmm = hw->bar2.vmm;
    168         rm->flush = r535_bar_flush;
    169 
    170         ret = gf100_bar_new_(rm, device, type, inst, &bar);
--> 171         *pbar = bar;
    172         if (ret) {
    173                 if (!bar)
                            ^^^^
If gf100_bar_new_() fails then bar isn't initialized.  Do we really
need to initialize bar to NULL on error?  If so then we should do it
before the "rm = kzalloc()".

    174                         kfree(rm);
    175                 return ret;
    176         }
    177 
    178         bar->flushBAR2PhysMode = ioremap(device->func->resource_addr(device, 3), PAGE_SIZE);
    179         if (!bar->flushBAR2PhysMode)
    180                 return -ENOMEM;
    181 
    182         bar->flushBAR2 = bar->flushBAR2PhysMode;
    183 
    184         gf100_bar(*pbar)->bar2_halve = true;
    185         return 0;
    186 }

regards,
dan carpenter



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux