On 2023/01/12 0:30, Tao Liu wrote:
>>> @@ -275,6 +283,49 @@ static void do_mt_entry(ulong entry, ulong min, ulong 
>>> max, uint depth,
>>>
>>>          if (!td)
>>>                  return;
>>> +
>>> +       if (!td->count && td->structname_args) {
>>> +               /*
>>> +                * Retrieve all members' info only once (count == 0)
>>> +                * After last iteration all memory will be freed up
>>> +                */
>>> +               e = (struct req_entry **)GETBUF(sizeof(*e) * 
>>> td->structname_args);
>>
>>
>> I would suggest freeing the allocated memory for "e" at the end of this 
>> function.
> 
> I think free "e" at the end of the function is reasonable. By a quick
> glimpse, it seems that do_xarray_entry() and do_rdtree_entry() etc.
> have the similar issue?

Ah yes, they have.  But all buffers allocated by GETBUF() are 
automatically freed after finishing a command, so it's not an actual 
problem if you don't use more buffers than the limitation (about 2000+).
So there is no big necessity to fix them alone in this case IMHO.

>>
>> Can you help to add the FREEBUF() as below? Kazu.
>> +     if (e)
>> +        FREEBUF(e);

Sure, I'll do that.  Please wait for a while.

>>
>> Other changes look good to me, for the v5 with the minor modification: Ack.

Also thank you for your effective reviews, Lianbo.

Thanks,
Kazu
--
Crash-utility mailing list
Crash-utility@redhat.com
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to