drm/i915/gvt: Remove dangerous unpin of backing storage of bound GPU object
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 19 Oct 2016 10:11:41 +0000 (11:11 +0100)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Thu, 20 Oct 2016 09:18:40 +0000 (17:18 +0800)
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>
drivers/gpu/drm/i915/gvt/execlist.c

index f865ce0c77272b978d6693acba15e6416a7c74ac..5534336814f00ce6a1f8682eab187d28e10b9325 100644 (file)
@@ -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);