From: Christian König Date: Mon, 27 Apr 2015 15:04:34 +0000 (+0200) Subject: drm/radeon: fix lockup when BOs aren't part of the VM on release X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=26d4d129b6042197b4cbc8341c0618f99231af2f;p=linux-beck.git drm/radeon: fix lockup when BOs aren't part of the VM on release If we unmap BOs before releasing them them the intervall tree locks up because we try to remove an entry not inside the tree. Based on a patch from Michel Dänzer. Signed-off-by: Christian König CC: stable@vger.kernel.org Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c index 2a5a4a9e772d..16d8e95abd94 100644 --- a/drivers/gpu/drm/radeon/radeon_vm.c +++ b/drivers/gpu/drm/radeon/radeon_vm.c @@ -1107,7 +1107,8 @@ void radeon_vm_bo_rmv(struct radeon_device *rdev, list_del(&bo_va->bo_list); mutex_lock(&vm->mutex); - interval_tree_remove(&bo_va->it, &vm->va); + if (bo_va->it.start || bo_va->it.last) + interval_tree_remove(&bo_va->it, &vm->va); spin_lock(&vm->status_lock); list_del(&bo_va->vm_status);