]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdgpu: install stub fence into potential unused fence pointers
authorLang Yu <Lang.Yu@amd.com>
Fri, 5 May 2023 12:14:15 +0000 (20:14 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 26 Aug 2023 12:23:23 +0000 (14:23 +0200)
[ Upstream commit 187916e6ed9d0c3b3abc27429f7a5f8c936bd1f0 ]

When using cpu to update page tables, vm update fences are unused.
Install stub fence into these fence pointers instead of NULL
to avoid NULL dereference when calling dma_fence_wait() on them.

Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Lang Yu <Lang.Yu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index 0e4554950e07268e7081361faa2f0b3c9fba6773..788611a50a68e5ffb553e9f8dba7b7bade61c65e 100644 (file)
@@ -2260,6 +2260,7 @@ struct amdgpu_bo_va *amdgpu_vm_bo_add(struct amdgpu_device *adev,
        amdgpu_vm_bo_base_init(&bo_va->base, vm, bo);
 
        bo_va->ref_count = 1;
+       bo_va->last_pt_update = dma_fence_get_stub();
        INIT_LIST_HEAD(&bo_va->valids);
        INIT_LIST_HEAD(&bo_va->invalids);
 
@@ -2974,7 +2975,8 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)
                vm->update_funcs = &amdgpu_vm_cpu_funcs;
        else
                vm->update_funcs = &amdgpu_vm_sdma_funcs;
-       vm->last_update = NULL;
+
+       vm->last_update = dma_fence_get_stub();
        vm->last_unlocked = dma_fence_get_stub();
 
        mutex_init(&vm->eviction_lock);
@@ -3117,7 +3119,7 @@ int amdgpu_vm_make_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm)
                vm->update_funcs = &amdgpu_vm_sdma_funcs;
        }
        dma_fence_put(vm->last_update);
-       vm->last_update = NULL;
+       vm->last_update = dma_fence_get_stub();
        vm->is_compute_context = true;
 
        /* Free the shadow bo for compute VM */