summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2016-10-19 11:11:41 +0100
committerZhenyu Wang <zhenyuw@linux.intel.com>2016-10-20 17:18:40 +0800
commiteeacd86efa53e6328c63b79d1999a7d214972278 (patch)
tree5a45997487ea5556e4bffbf5269bdae7244ba5d3 /drivers/gpu/drm/i915
parentb6d891429d29f4ff7cacbaa5c4bb1511797a4bce (diff)
drm/i915/gvt: Remove dangerous unpin of backing storage of bound GPU object
Unpinning the pages prior to the object being release from the GPU may allow the GPU to read and write into system pages (i.e. use after free by the hw). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r--drivers/gpu/drm/i915/gvt/execlist.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/gvt/execlist.c b/drivers/gpu/drm/i915/gvt/execlist.c
index f865ce0c7727..5534336814f0 100644
--- a/drivers/gpu/drm/i915/gvt/execlist.c
+++ b/drivers/gpu/drm/i915/gvt/execlist.c
@@ -405,7 +405,11 @@ static void prepare_shadow_batch_buffer(struct intel_vgpu_workload *workload)
gvt_err("Cannot pin\n");
return;
}
- i915_gem_object_unpin_pages(entry_obj->obj);
+
+ /* FIXME: we are not tracking our pinned VMA leaving it
+ * up to the core to fix up the stray pin_count upon
+ * free.
+ */
/* update the relocate gma with shadow batch buffer*/
set_gma_to_bb_cmd(entry_obj,
@@ -455,7 +459,11 @@ static void prepare_shadow_wa_ctx(struct intel_shadow_wa_ctx *wa_ctx)
gvt_err("Cannot pin indirect ctx obj\n");
return;
}
- i915_gem_object_unpin_pages(wa_ctx->indirect_ctx.obj);
+
+ /* FIXME: we are not tracking our pinned VMA leaving it
+ * up to the core to fix up the stray pin_count upon
+ * free.
+ */
wa_ctx->indirect_ctx.shadow_gma = i915_ggtt_offset(vma);