summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-04-29 19:02:34 +0000
committerkib <kib@FreeBSD.org>2014-04-29 19:02:34 +0000
commit191551c68738273bf196d855b393744ce315c63f (patch)
treedd8d11fc4049e2e39875e336b3e2145b3796df2c
parent9c850920136486c909a374adff26b7848b1be08c (diff)
downloadFreeBSD-src-191551c68738273bf196d855b393744ce315c63f.zip
FreeBSD-src-191551c68738273bf196d855b393744ce315c63f.tar.gz
Fix two cases of recursive acquisitions of the vm object lock, only
possible in rare failure situations. Sponsored by: The FreeBSD Foundation MFC after: 1 week
-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