Re:Re: [PATCH v2] drm/amdkfd: Fix memory leaks according to error branches

From: Bernard
Date: Sat Jun 20 2020 - 07:20:35 EST




From: Julia Lawall <julia.lawall@xxxxxxxx>
Date: 2020-06-20 17:37:19
To: Markus Elfring <Markus.Elfring@xxxxxx>
Cc: Bernard Zhao <bernard@xxxxxxxx>,opensource.kernel@xxxxxxxx,amd-gfx@xxxxxxxxxxxxxxxxxxxxx,dri-devel@xxxxxxxxxxxxxxxxxxxxx,kernel-janitors@xxxxxxxxxxxxxxx,linux-kernel@xxxxxxxxxxxxxxx,Alex Deucher <alexander.deucher@xxxxxxx>,"Christian KÃnig" <christian.koenig@xxxxxxx>,"Felix KÃhling" <Felix.Kuehling@xxxxxxx>,Daniel Vetter <daniel@xxxxxxxx>,David Airlie <airlied@xxxxxxxx>
Subject: Re: [PATCH v2] drm/amdkfd: Fix memory leaks according to error branches>
>
>On Sat, 20 Jun 2020, Markus Elfring wrote:
>
>> > The function kobject_init_and_add alloc memory like:
>> > kobject_init_and_add->kobject_add_varg->kobject_set_name_vargs
>> > ->kvasprintf_const->kstrdup_const->kstrdup->kmalloc_track_caller
>> > ->kmalloc_slab, in err branch this memory not free. If use
>> > kmemleak, this path maybe catched.
>> > These changes are to add kobject_put in kobject_init_and_add
>> > failed branch, fix potential memleak.
>>
>> I suggest to improve this change description.
>>
>> * Can an other wording variant be nicer?
>
>Markus's suggestion is as usual extremely imprecise. However, I also find
>the message quite unclear.
>
>It would be good to always use English words. alloc and err are not
>English words. Perhaps most people will figure out what they are
>abbreviations for, but it would be better to use a few more letters to
>make it so that no one has to guess.
>
>Then there are a bunch of things that are connected by arrows with no
>spaces between them. The most obvious meaning of an arrow with no space
>around it is a variable dereference. After spending some mental effort,
>one can realize that that is not what you mean here. A layout like:
>
> first_function ->
> second_function ->
> third_function
>
>would be much more readable.
>
>I don't know what "this patch maybe catched" means. Is "catched" supposed
>to be "caught" or "cached"? Overall, the sentence could be "Kmemleak
>could possibly detect this issue", or something like that. But I don't
>know what this means. Did you detect the problem with kmemleak? if you
>did not detect the problem with kmemleak, and overall you don't know
>whether kmemleak would detect the bug or not, is this information useful
>at all for the patch?

Hi:

Kmemleak detected a memory leak as below:
kobject_init_and_add->
kobject_add_varg->
kobject_set_name_vargs->
kvasprintf_const->
kstrdup_const->
kstrdup->
kmalloc_track_caller->
kmalloc_slab

If kobject_init_and_add is called, but kobject_put is not called in the error branch.
This will be detected by kmemleak.

BR//Bernard

>"These changes are to" makes a lot of words with no information. While it
>is perhaps not necessary to slavishly follow the rule about using the
>imperative, if it is convenient to use the imperative, doing so eliminates
>such meaningless phrases.
>
>memleak is also not an English word. Memory leak is only a few more
>characters, and doesn't require the reader to make the small extra effort
>to figure out what you mean.
>
>julia
>
>>
>> * Will the tag âFixesâ become helpful for the commit message?
>>
>> Regards,
>> Markus
>>