Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 108b0d34 authored by Sebastian Biemueller's avatar Sebastian Biemueller Committed by Dave Airlie
Browse files

drm/radeon/kms/vm: fix possible bug in radeon_vm_bo_rmv()



The bo is removed from the list at the top of
radeon_vm_bo_rmv(), but then the list is used
in radeon_vm_bo_update_pte() to look up the vm.
remove the bo_list entry at the end of the
function instead.

Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Reviewed-by: default avatarJerome Glisse <j.glisse@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 1404547f
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -597,13 +597,13 @@ int radeon_vm_bo_rmv(struct radeon_device *rdev,
	if (bo_va == NULL)
	if (bo_va == NULL)
		return 0;
		return 0;


	list_del(&bo_va->bo_list);
	mutex_lock(&vm->mutex);
	mutex_lock(&vm->mutex);
	radeon_mutex_lock(&rdev->cs_mutex);
	radeon_mutex_lock(&rdev->cs_mutex);
	radeon_vm_bo_update_pte(rdev, vm, bo, NULL);
	radeon_vm_bo_update_pte(rdev, vm, bo, NULL);
	radeon_mutex_unlock(&rdev->cs_mutex);
	radeon_mutex_unlock(&rdev->cs_mutex);
	list_del(&bo_va->vm_list);
	list_del(&bo_va->vm_list);
	mutex_unlock(&vm->mutex);
	mutex_unlock(&vm->mutex);
	list_del(&bo_va->bo_list);


	kfree(bo_va);
	kfree(bo_va);
	return 0;
	return 0;