summaryrefslogtreecommitdiffstats
path: root/sys/dev/drm2
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-05-06 12:31:25 +0000
committerkib <kib@FreeBSD.org>2014-05-06 12:31:25 +0000
commitf5b893b0e83e26a9af9210ae8aeb364d6b9367e7 (patch)
tree9a7bf03288621e18b5f605d12edb292821144af2 /sys/dev/drm2
parent68fab2508087e21af8f980acb74995c49794a872 (diff)
downloadFreeBSD-src-f5b893b0e83e26a9af9210ae8aeb364d6b9367e7.zip
FreeBSD-src-f5b893b0e83e26a9af9210ae8aeb364d6b9367e7.tar.gz
MFC r265102:
Fix two cases of recursive acquisitions of the vm object lock, only possible in rare failure situations.
Diffstat (limited to 'sys/dev/drm2')
-rw-r--r--sys/dev/drm2/i915/i915_gem.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/drm2/i915/i915_gem.c b/sys/dev/drm2/i915/i915_gem.c
index 9af50d8..99821e4 100644
--- a/sys/dev/drm2/i915/i915_gem.c
+++ b/sys/dev/drm2/i915/i915_gem.c
@@ -1431,6 +1431,7 @@ retry:
m = vm_phys_fictitious_to_vm_page(dev->agp->base + obj->gtt_offset +
offset);
if (m == NULL) {
+ VM_OBJECT_WUNLOCK(vm_obj);
cause = 60;
ret = -EFAULT;
goto unlock;
@@ -1450,7 +1451,6 @@ retry:
DRM_UNLOCK(dev);
VM_OBJECT_WUNLOCK(vm_obj);
VM_WAIT;
- VM_OBJECT_WLOCK(vm_obj);
goto retry;
}
m->valid = VM_PAGE_BITS_ALL;
OpenPOWER on IntegriCloud