Re: [PATCH] perf stat: Fix NULL vs IS_ERR() checking in check_per_pkg

From: German Gomez
Date: Sun Dec 12 2021 - 10:37:56 EST



On 12/12/2021 14:55, German Gomez wrote:
> Hi Miaoqian,
>
> On 12/12/2021 04:23, Miaoqian Lin wrote:
>> The hashmap__new() function does not return NULL on errors. It returns
>> ERR_PTR(-ENOMEM). Using IS_ERR() to check the return value
>> to fix this.
>>
>> Signed-off-by: Miaoqian Lin <linmq006@xxxxxxxxx>
>> ---
>> tools/perf/util/stat.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
>> index 09ea334586f2..a77052680087 100644
>> --- a/tools/perf/util/stat.c
>> +++ b/tools/perf/util/stat.c
>> @@ -311,8 +311,8 @@ static int check_per_pkg(struct evsel *counter,
>>
>> if (!mask) {
>> mask = hashmap__new(pkg_id_hash, pkg_id_equal, NULL);
>> - if (!mask)
>> - return -ENOMEM;
>> + if (IS_ERR(mask))
>> + return PTR_ERR(mask);

Also (sorry, I haven't tried/tested the patch yet) is this return
necessary? To me it seems it's still ok to keep the "return -ENOMEM".

> I see that callers to "ids__new" are also missing these checks. Did you
> consider patching those also?
>
> Thanks,
> German
>
>>
>> counter->per_pkg_mask = mask;
>> }