[PATCH] lib: sbi: Resolve the uninitialized complaint in sbi_pmu

Dong Du dd_nirvana at sjtu.edu.cn
Thu Nov 25 22:38:02 PST 2021



On Nov 25, 2021, at 11:35 PM, Xiang wxjstz at 126.com wrote:

> 在 2021-11-25星期四的 18:38 +0800,Dong Du写道:
>> A recent commit (b28f0700) turns to read from CSR_MCOUNTINHIBIT after
>> checking the SBI_HART_HAS_MCOUNTINHIBIT HART feature, which leaves
>> the
>> mctr_inhbt uninitialized in pmu_ctr_find_hw().
>> As a result, compiler will complain:
>> error: 'mctr_inhbt' may be used uninitialized in this function.
>> 
>> This commit resolves the issue by assigning an initial value to
>> mctr_inhbt.
>> 
>> Signed-off-by: Dong Du <Dd_nirvana at sjtu.edu.cn>
> SBI_HART_HAS_MCOUNTINHIBIT has been tested before accessing mctr_inhbt,

Hi Xiang,

  It's true. It's not a bug (as I said, it's a compiler complaint).
  But the compiler (gcc) can not know (and ensure) that the used variable is always initialized.

  The reported issue will lead to a compiling error now in my environment because of 'Werror=maybe-uninitialized'.

Regards,
Dong

> so there is no need to initialize
> 
> Regards,
> Xiang W
>> ---
>>  lib/sbi/sbi_pmu.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/lib/sbi/sbi_pmu.c b/lib/sbi/sbi_pmu.c
>> index a0eb359..5950a20 100644
>> --- a/lib/sbi/sbi_pmu.c
>> +++ b/lib/sbi/sbi_pmu.c
>> @@ -489,7 +489,7 @@ static int pmu_ctr_find_hw(unsigned long cbase,
>> unsigned long cmask, unsigned lo
>>         unsigned long ctr_mask;
>>         int i, ret = 0, fixed_ctr, ctr_idx = SBI_ENOTSUPP;
>>         struct sbi_pmu_hw_event *temp;
>> -       unsigned long mctr_inhbt;
>> +       unsigned long mctr_inhbt = 0;
>>         u32 hartid = current_hartid();
>>         struct sbi_scratch *scratch = sbi_scratch_thishart_ptr();
>>  
>> --
>> 2.33.1
>> 



More information about the opensbi mailing list