diff options
author | kib <kib@FreeBSD.org> | 2014-04-29 19:02:34 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2014-04-29 19:02:34 +0000 |
commit | 191551c68738273bf196d855b393744ce315c63f (patch) | |
tree | dd8d11fc4049e2e39875e336b3e2145b3796df2c /sys/dev/drm2 | |
parent | 9c850920136486c909a374adff26b7848b1be08c (diff) | |
download | FreeBSD-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
Diffstat (limited to 'sys/dev/drm2')
-rw-r--r-- | sys/dev/drm2/i915/i915_gem.c | 2 |
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; |