drm/i915: Unlock mutex on i915_gem_fault() error path
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 4 Feb 2009 14:15:10 +0000 (14:15 +0000)
committerDave Airlie <airlied@linux.ie>
Sun, 8 Feb 2009 11:38:27 +0000 (21:38 +1000)
If we failed to allocate a new fence register we would return
VM_FAULT_SIGBUS without relinquishing the lock.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Dave Airlie <airlied@linux.ie>
drivers/gpu/drm/i915/i915_gem.c

index 6a9e3a8..1441831 100644 (file)
@@ -588,8 +588,10 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
        if (obj_priv->fence_reg == I915_FENCE_REG_NONE &&
            obj_priv->tiling_mode != I915_TILING_NONE) {
                ret = i915_gem_object_get_fence_reg(obj, write);
-               if (ret != 0)
+               if (ret) {
+                       mutex_unlock(&dev->struct_mutex);
                        return VM_FAULT_SIGBUS;
+               }
        }
 
        pfn = ((dev->agp->base + obj_priv->gtt_offset) >> PAGE_SHIFT) +