Browse Source

drm/amdgpu: set bulk_moveable to false when a per VM is released

Otherwise we might run into a use after free during bulk move.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Christian König 7 years ago
parent
commit
fbbf794cbd
1 changed files with 4 additions and 0 deletions
  1. 4 0
      drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

+ 4 - 0
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

@@ -2512,8 +2512,12 @@ void amdgpu_vm_bo_rmv(struct amdgpu_device *adev,
 		      struct amdgpu_bo_va *bo_va)
 		      struct amdgpu_bo_va *bo_va)
 {
 {
 	struct amdgpu_bo_va_mapping *mapping, *next;
 	struct amdgpu_bo_va_mapping *mapping, *next;
+	struct amdgpu_bo *bo = bo_va->base.bo;
 	struct amdgpu_vm *vm = bo_va->base.vm;
 	struct amdgpu_vm *vm = bo_va->base.vm;
 
 
+	if (bo && bo->tbo.resv == vm->root.base.bo->tbo.resv)
+		vm->bulk_moveable = false;
+
 	list_del(&bo_va->base.bo_list);
 	list_del(&bo_va->base.bo_list);
 
 
 	spin_lock(&vm->invalidated_lock);
 	spin_lock(&vm->invalidated_lock);