Hello Sreekant Somasekharan,

This is a semi-automatic email about new static checker warnings.

Commit 628e1ace2379 ("drm/amdkfd: mark GFX12 system and peer GPU
memory mappings as MTYPE_NC") from Mar 26, 2024, leads to the
following Smatch complaint:

    drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c:518 gmc_v12_0_get_vm_pte()
    warn: variable dereferenced before check 'bo' (see line 500)

drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
   499          struct amdgpu_bo *bo = mapping->bo_va->base.bo;
   500          struct amdgpu_device *bo_adev = amdgpu_ttm_adev(bo->tbo.bdev);
                                                                ^^^^
   501          bool coherent = bo->flags & AMDGPU_GEM_CREATE_COHERENT;
                                ^^^^^^^^^
   502          bool is_system = bo->tbo.resource->mem_type == TTM_PL_SYSTEM;
                                 ^^^^^^^
The patch adds unchecked dereferences.

   503  
   504  
   505          *flags &= ~AMDGPU_PTE_EXECUTABLE;
   506          *flags |= mapping->flags & AMDGPU_PTE_EXECUTABLE;
   507  
   508          *flags &= ~AMDGPU_PTE_MTYPE_GFX12_MASK;
   509          *flags |= (mapping->flags & AMDGPU_PTE_MTYPE_GFX12_MASK);
   510  
   511          if (mapping->flags & AMDGPU_PTE_PRT_GFX12) {
   512                  *flags |= AMDGPU_PTE_PRT_GFX12;
   513                  *flags |= AMDGPU_PTE_SNOOPED;
   514                  *flags |= AMDGPU_PTE_SYSTEM;
   515                  *flags &= ~AMDGPU_PTE_VALID;
   516          }
   517  
   518          if (bo && bo->flags & (AMDGPU_GEM_CREATE_COHERENT |
                    ^^
But previously we assumed bo could be NULL.

   519                                 AMDGPU_GEM_CREATE_UNCACHED))
   520                  *flags = (*flags & ~AMDGPU_PTE_MTYPE_GFX12_MASK) |

regards,
dan carpenter

Reply via email to