[PATCH v2] drm/i915/gvt: do not reference a virtual address after kunmap

Yan Zhao yan.y.zhao at intel.com
Thu May 30 11:27:20 UTC 2019


store the context ctl value into local variable, so as not to reference
a virtual address after kunmap

v2: use local variable to avoid referencing vaddr after kunmap

Signed-off-by: Yan Zhao <yan.y.zhao at intel.com>
---
 drivers/gpu/drm/i915/gvt/scheduler.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c
index 353b4d0da6b4..4e44d70fa772 100644
--- a/drivers/gpu/drm/i915/gvt/scheduler.c
+++ b/drivers/gpu/drm/i915/gvt/scheduler.c
@@ -132,6 +132,7 @@ static int populate_shadow_context(struct intel_vgpu_workload *workload)
 	void *dst;
 	unsigned long context_gpa, context_page_num;
 	int i;
+	u32 ctx_ctrl_val;
 
 	page = i915_gem_object_get_page(ctx_obj, LRC_STATE_PN);
 	shadow_ring_context = kmap(page);
@@ -150,6 +151,8 @@ static int populate_shadow_context(struct intel_vgpu_workload *workload)
 	COPY_REG_MASKED(ctx_ctrl);
 	COPY_REG(ctx_timestamp);
 
+	ctx_ctrl_val = shadow_ring_context->ctx_ctrl.val;
+
 	if (ring_id == RCS0) {
 		COPY_REG(bb_per_ctx_ptr);
 		COPY_REG(rcs_indirect_ctx);
@@ -168,7 +171,7 @@ static int populate_shadow_context(struct intel_vgpu_workload *workload)
 	sr_oa_regs(workload, (u32 *)shadow_ring_context, false);
 	kunmap(page);
 
-	if (IS_RESTORE_INHIBIT(shadow_ring_context->ctx_ctrl.val))
+	if (IS_RESTORE_INHIBIT(ctx_ctrl_val))
 		return 0;
 
 	gvt_dbg_sched("ring id %d workload lrca %x", ring_id,
-- 
2.17.1



More information about the intel-gvt-dev mailing list