Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f7399af authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Unwind vma->pages allocation upon failure



If we fail to allocate the ppgtt range after allocating the pages for
the vma, we should unwind the local allocation before reporting back the
failure.

Fixes: ff685975 ("drm/i915: Move allocate_va_range to GTT")
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170227122654.27651-2-chris@chris-wilson.co.uk
parent bf75d59e
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -2312,7 +2312,7 @@ static int aliasing_gtt_bind_vma(struct i915_vma *vma,
							     vma->node.start,
							     vma->node.size);
			if (ret)
				return ret;
				goto err_pages;
		}

		appgtt->base.insert_entries(&appgtt->base,
@@ -2329,6 +2329,17 @@ static int aliasing_gtt_bind_vma(struct i915_vma *vma,
	}

	return 0;

err_pages:
	if (!(vma->flags & (I915_VMA_GLOBAL_BIND | I915_VMA_LOCAL_BIND))) {
		if (vma->pages != vma->obj->mm.pages) {
			GEM_BUG_ON(!vma->pages);
			sg_free_table(vma->pages);
			kfree(vma->pages);
		}
		vma->pages = NULL;
	}
	return ret;
}

static void aliasing_gtt_unbind_vma(struct i915_vma *vma)