Dan Carpenter
2017-Apr-20 19:01 UTC
[Nouveau] [bug report] drm/nouveau/secboot/gm20b: add secure boot support
Hello Alexandre Courbot, The patch 923f1bd27bf1: "drm/nouveau/secboot/gm20b: add secure boot support" from Feb 24, 2016, leads to the following static checker warning: drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gm20b.c:129 gm20b_secboot_new() warn: did you mean to set '*psb' instead of 'psb' drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gm20b.c 103 int 104 gm20b_secboot_new(struct nvkm_device *device, int index, 105 struct nvkm_secboot **psb) 106 { 107 int ret; 108 struct gm200_secboot *gsb; 109 struct nvkm_acr *acr; 110 111 acr = acr_r352_new(BIT(NVKM_SECBOOT_FALCON_FECS) | 112 BIT(NVKM_SECBOOT_FALCON_PMU)); 113 if (IS_ERR(acr)) 114 return PTR_ERR(acr); 115 /* Support the initial GM20B firmware release without PMU */ 116 acr->optional_falcons = BIT(NVKM_SECBOOT_FALCON_PMU); 117 118 gsb = kzalloc(sizeof(*gsb), GFP_KERNEL); 119 if (!gsb) { 120 psb = NULL; It's complaining about this. We obviously did intend to set *psb = NULL because the code is a no-op as it is now. But shouldn't we just do it at the start of the function so it's set for the other earlier return as well? 121 return -ENOMEM; 122 } 123 *psb = &gsb->base; 124 125 ret = nvkm_secboot_ctor(&gm20b_secboot, acr, device, index, &gsb->base); 126 if (ret) 127 return ret; And what about here, do we not want it to be NULL on this failure path? I wasn't able to figure out how this code is called. Normally Smatch is able to figure out the call tree but I also wasn't able to figure it out manually. Could you point me where this function is called? 128 129 return 0; 130 } This code is just cut and pasted and the other functions have this bug as well. See also: drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gp102.c:170 gp102_secboot_new() warn: did you mean to set '*psb' instead of 'psb' drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gp10b.c:74 gp10b_secboot_new() warn: did you mean to set '*psb' instead of 'psb' drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gm200.c:203 gm200_secboot_new() warn: did you mean to set '*psb' instead of 'psb' regards, dan carpenter
Possibly Parallel Threads
- [PATCH] nouveau/secboot/gm20b: initialize pointer in gm20b_secboot_new()
- [PATCH AUTOSEL 5.5 355/542] drm/nouveau/secboot/gm20b: initialize pointer in gm20b_secboot_new()
- [PATCH AUTOSEL 5.4 309/459] drm/nouveau/secboot/gm20b: initialize pointer in gm20b_secboot_new()
- [PATCH AUTOSEL 4.19 168/252] drm/nouveau/secboot/gm20b: initialize pointer in gm20b_secboot_new()
- [PATCH AUTOSEL 4.14 125/186] drm/nouveau/secboot/gm20b: initialize pointer in gm20b_secboot_new()