]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
amdkfd: properly free gang_ctx_bo when failed to init user queue
authorZhu Lingshan <lingshan.zhu@amd.com>
Sun, 26 Jan 2025 09:21:10 +0000 (17:21 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 13 Feb 2025 00:47:15 +0000 (19:47 -0500)
The destructor of a gtt bo is declared as
void amdgpu_amdkfd_free_gtt_mem(struct amdgpu_device *adev, void **mem_obj);
Which takes void** as the second parameter.

GCC allows passing void* to the function because void* can be implicitly
casted to any other types, so it can pass compiling.

However, passing this void* parameter into the function's
execution process(which expects void** and dereferencing void**)
will result in errors.

Signed-off-by: Zhu Lingshan <lingshan.zhu@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Fixes: fb91065851cd ("drm/amdkfd: Refactor queue wptr_bo GART mapping")
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c

index bcddd989c7f397d1581f4b4ebbb73d22fe459988..bd36a75309e120eb9968647041398a76b23e638d 100644 (file)
@@ -300,7 +300,7 @@ static int init_user_queue(struct process_queue_manager *pqm,
        return 0;
 
 free_gang_ctx_bo:
-       amdgpu_amdkfd_free_gtt_mem(dev->adev, (*q)->gang_ctx_bo);
+       amdgpu_amdkfd_free_gtt_mem(dev->adev, &(*q)->gang_ctx_bo);
 cleanup:
        uninit_queue(*q);
        *q = NULL;