Hello Rex Zhu,

The patch 48d7b759a8bc: "drm/amd/powerplay: add vce state tables
initialize for ppt v1." from Aug 31, 2016, leads to the following
static checker warning:

        
drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/process_pptables_v1_0.c:1211 
ppt_get_num_of_vce_state_table_entries_v1_0()
        warn: 'vce_state_table' can't be NULL.

drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/process_pptables_v1_0.c
  1200  
  1201  static int ppt_get_num_of_vce_state_table_entries_v1_0(struct pp_hwmgr 
*hwmgr)
  1202  {
  1203          const ATOM_Tonga_POWERPLAYTABLE *pp_table = 
get_powerplay_table(hwmgr);
  1204          const ATOM_Tonga_VCE_State_Table *vce_state_table =
  1205                                  (ATOM_Tonga_VCE_State_Table 
*)(((unsigned long)pp_table) + le16_to_cpu(pp_table->usVCEStateTableOffset));
                                                                                
                               ^^^^^^^^
pp_table can't be NULL because we're dereferencing it here.  That
means vce_state_table can't be NULL either.

  1206  
  1207          if (vce_state_table == NULL)
  1208                  return 0;
  1209  
  1210          return vce_state_table->ucNumEntries;
  1211  }
  1212  

A cleaner way to write this is maybe:

static int ppt_get_num_of_vce_state_table_entries_v1_0(struct pp_hwmgr *hwmgr)
{
        const ATOM_Tonga_POWERPLAYTABLE *pp_table = get_powerplay_table(hwmgr);
        const ATOM_Tonga_VCE_State_Table *vce_state_table;

        if (!pp_table)
                return 0;

        vce_state_table = (void *)pp_table + 
le16_to_cpu(pp_table->usVCEStateTableOffset);
        return vce_state_table->ucNumEntries;
}

regards,
dan carpenter

Reply via email to