Эх сурвалжийг харах

drm/amdgpu: max_pde_used usage should be under protect

Need to take the lock when accessing this.

Signed-off-by: monk.liu <monk.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Jammy Zhou <jammy.zhou@amd.com>
monk.liu 10 жил өмнө
parent
commit
3d5a08c114

+ 5 - 1
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

@@ -90,10 +90,13 @@ struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev,
 	struct amdgpu_bo_list_entry *list;
 	struct amdgpu_bo_list_entry *list;
 	unsigned i, idx;
 	unsigned i, idx;
 
 
+	mutex_lock(&vm->mutex);
 	list = drm_malloc_ab(vm->max_pde_used + 2,
 	list = drm_malloc_ab(vm->max_pde_used + 2,
 			     sizeof(struct amdgpu_bo_list_entry));
 			     sizeof(struct amdgpu_bo_list_entry));
-	if (!list)
+	if (!list) {
+		mutex_unlock(&vm->mutex);
 		return NULL;
 		return NULL;
+	}
 
 
 	/* add the vm page table to the list */
 	/* add the vm page table to the list */
 	list[0].robj = vm->page_directory;
 	list[0].robj = vm->page_directory;
@@ -116,6 +119,7 @@ struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev,
 		list[idx].tv.shared = true;
 		list[idx].tv.shared = true;
 		list_add(&list[idx++].tv.head, head);
 		list_add(&list[idx++].tv.head, head);
 	}
 	}
+	mutex_unlock(&vm->mutex);
 
 
 	return list;
 	return list;
 }
 }