[PATCH] drm/amdkfd: init drm_client with funcs hook

Felix Kuehling felix.kuehling at amd.com
Mon Jan 15 15:31:28 UTC 2024


On 2024-01-12 3:05, Flora Cui wrote:
> otherwise drm_client_dev_unregister() would try to
> kfree(&adev->kfd.client).
>
> Signed-off-by: Flora Cui <flora.cui at amd.com>

Thank you for finding and fixing this bug. You can add:

Fixes: 1819200166ce ("drm/amdkfd: Export DMABufs from KFD using GEM 
handles")
Reviewed-by: Felix Kuehling <felix.kuehling at amd.com>


> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> index 067690ba7bff..81af6bf2f052 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> @@ -138,6 +138,9 @@ static void amdgpu_amdkfd_reset_work(struct work_struct *work)
>   	amdgpu_device_gpu_recover(adev, NULL, &reset_context);
>   }
>   
> +static const struct drm_client_funcs kfd_client_funcs = {
> +	.unregister	= drm_client_release,
> +};
>   void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
>   {
>   	int i;
> @@ -161,7 +164,7 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
>   			.enable_mes = adev->enable_mes,
>   		};
>   
> -		ret = drm_client_init(&adev->ddev, &adev->kfd.client, "kfd", NULL);
> +		ret = drm_client_init(&adev->ddev, &adev->kfd.client, "kfd", &kfd_client_funcs);
>   		if (ret) {
>   			dev_err(adev->dev, "Failed to init DRM client: %d\n", ret);
>   			return;


More information about the amd-gfx mailing list