[Nouveau] [bug report] drm/nouveau/mmu/r535: initial support
Dan Carpenter
dan.carpenter at linaro.org
Tue Nov 7 14:32:09 UTC 2023
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
More information about the Nouveau
mailing list