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-Tag: v3.18.18~184 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92e022e63b29ec2564e3a5c2a6294bb3389f8c72;p=thirdparty%2Fkernel%2Fstable.git drm/radeon: fix lockup when BOs aren't part of the VM on release [ Upstream commit 26d4d129b6042197b4cbc8341c0618f99231af2f ] 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 Signed-off-by: Sasha Levin --- diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c index 2ab80a5331a49..b0c4958a3993a 100644 --- a/drivers/gpu/drm/radeon/radeon_vm.c +++ b/drivers/gpu/drm/radeon/radeon_vm.c @@ -1058,7 +1058,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); list_del(&bo_va->vm_status); if (bo_va->addr) {