diff options
author | Christian König <christian.koenig@amd.com> | 2015-04-27 17:04:34 +0200 |
---|---|---|
committer | Sasha Levin <sasha.levin@oracle.com> | 2015-07-03 12:33:45 -0400 |
commit | 92e022e63b29ec2564e3a5c2a6294bb3389f8c72 (patch) | |
tree | 8c925beac9d80fb0d5f18c680ba55ba7875543f4 /drivers/gpu | |
parent | c46ed6527b0fbebabb494a648e1d8ec0dee8e0d8 (diff) | |
download | lwn-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.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 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) { |