On 5/14/25 10:19, Liang, Prike wrote:
> [AMD Official Use Only - AMD Internal Distribution Only]
> 
>> From: Koenig, Christian <[email protected]>
>> Sent: Wednesday, May 14, 2025 3:02 PM
>> To: Liang, Prike <[email protected]>; [email protected]
>> Cc: Deucher, Alexander <[email protected]>
>> Subject: Re: [PATCH] drm/amdgpu: fix userq resource double freed
>>
>> On 5/12/25 09:30, Prike Liang wrote:
>>> As the userq resource was already freed at the drm_release early
>>> phase, it should avoid freeing userq resource again at the later kms
>>> postclose callback.
>>
>> Clear NAK. You are just hiding a bug.
>>
>> The userq resources should always be only cleaned up here and that function
>> can't be called twice.
> The original issue is that the userq resource is freed first at 
> amdgpu_drm_release(), and then second freed at amdgpu_driver_postclose_km().
> At this point, it's more reasonable to remove the userq resource cleanup at 
> drm file release phase and just keep freeing the userq resource at postclose 
> moment?

Ah! In that case this code here should just be removed.

Regards,
Christian.

> 
>>
>> Regards,
>> Christian.
>>
>>>
>>> Signed-off-by: Prike Liang <[email protected]>
>>> ---
>>>  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 9 +++++----
>>>  1 file changed, 5 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> index 8d4a2aed7231..cf0f35a7daee 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> @@ -1502,10 +1502,11 @@ void amdgpu_driver_postclose_kms(struct
>> drm_device *dev,
>>>             amdgpu_bo_unreserve(pd);
>>>     }
>>>
>>> -   fpriv->evf_mgr.fd_closing = true;
>>> -   amdgpu_userq_mgr_fini(&fpriv->userq_mgr);
>>> -   amdgpu_eviction_fence_destroy(&fpriv->evf_mgr);
>>> -
>>> +   if (!fpriv->evf_mgr.fd_closing) {
>>> +           fpriv->evf_mgr.fd_closing = true;
>>> +           amdgpu_userq_mgr_fini(&fpriv->userq_mgr);
>>> +           amdgpu_eviction_fence_destroy(&fpriv->evf_mgr);
>>> +   }
>>>     amdgpu_ctx_mgr_fini(&fpriv->ctx_mgr);
>>>     amdgpu_vm_fini(adev, &fpriv->vm);
>>>
> 

Reply via email to