diff options
author | Christian König <christian.koenig@amd.com> | 2015-04-27 17:04:34 +0200 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-04-27 11:27:59 -0400 |
commit | 26d4d129b6042197b4cbc8341c0618f99231af2f (patch) | |
tree | b9242dfb94f34298e3a68b7ec7c07322ebf575dd | |
parent | cd17e02ff4db58ec32d35cf331c705d295779930 (diff) | |
download | op-kernel-dev-26d4d129b6042197b4cbc8341c0618f99231af2f.zip op-kernel-dev-26d4d129b6042197b4cbc8341c0618f99231af2f.tar.gz |
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 <christian.koenig@amd.com>
CC: stable@vger.kernel.org
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_vm.c | 3 |
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 2a5a4a9..16d8e95 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); |