From 191551c68738273bf196d855b393744ce315c63f Mon Sep 17 00:00:00 2001 From: kib Date: Tue, 29 Apr 2014 19:02:34 +0000 Subject: 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 --- sys/dev/drm2/i915/i915_gem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; -- cgit v1.1