summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2015-04-27 17:04:34 +0200
committerSasha Levin <sasha.levin@oracle.com>2015-07-03 12:33:45 -0400
commit92e022e63b29ec2564e3a5c2a6294bb3389f8c72 (patch)
tree8c925beac9d80fb0d5f18c680ba55ba7875543f4 /drivers/gpu
parentc46ed6527b0fbebabb494a648e1d8ec0dee8e0d8 (diff)
downloadlwn-92e022e63b29ec2564e3a5c2a6294bb3389f8c72.tar.gz
lwn-92e022e63b29ec2564e3a5c2a6294bb3389f8c72.zip
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 <christian.koenig@amd.com> CC: stable@vger.kernel.org Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/radeon/radeon_vm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c
index 2ab80a5331a4..b0c4958a3993 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) {