Hello Chris Wilson, This is a semi-automatic email about new static checker warnings. The patch c286558f5853: "drm/i915/gt: Use i915_vm_put on ppgtt_create error paths" from Sep 26, 2022, leads to the following Smatch complaint: drivers/gpu/drm/i915/gt/gen6_ppgtt.c:274 gen6_ppgtt_cleanup() warn: variable dereferenced before check 'ppgtt->base.pd' (see line 271) drivers/gpu/drm/i915/gt/gen6_ppgtt.c 256 static void gen6_ppgtt_free_pd(struct gen6_ppgtt *ppgtt) 257 { 258 struct i915_page_directory * const pd = ppgtt->base.pd; ^^ pd is ppgtt->base.pd. 259 struct i915_page_table *pt; 260 u32 pde; 261 262 gen6_for_all_pdes(pt, pd, pde) ^^ There is an unchecked dereference inside this loop macro. 263 if (pt) 264 free_pt(&ppgtt->base.vm, pt); 265 } 266 267 static void gen6_ppgtt_cleanup(struct i915_address_space *vm) 268 { 269 struct gen6_ppgtt *ppgtt = to_gen6_ppgtt(i915_vm_to_ppgtt(vm)); 270 271 gen6_ppgtt_free_pd(ppgtt); ^^^^^^^^^^^^^^^^^^^^^^^^^^ 272 free_scratch(vm); 273 274 if (ppgtt->base.pd) ^^^^^^^^^^^^^^ Checked after an unchecked dereference. 275 free_pd(&ppgtt->base.vm, ppgtt->base.pd); 276 277 mutex_destroy(&ppgtt->flush); 278 } regards, dan carpenter