Преглед на файлове

drm/i915/gvt: fix use after free for workload

In the function workload_thread(), we invoke complete_current_workload()
to cleanup the just processed workload (workload will be freed there).
So we cannot access workload->req after that. This patch move
complete_current_workload() afterward.

Signed-off-by: Changbin Du <changbin.du@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Changbin Du преди 8 години
родител
ревизия
2e51ef32b0
променени са 1 файла, в които са добавени 2 реда и са изтрити 2 реда
  1. 2 2
      drivers/gpu/drm/i915/gvt/scheduler.c

+ 2 - 2
drivers/gpu/drm/i915/gvt/scheduler.c

@@ -459,11 +459,11 @@ complete:
 		gvt_dbg_sched("will complete workload %p\n, status: %d\n",
 				workload, workload->status);
 
-		complete_current_workload(gvt, ring_id);
-
 		if (workload->req)
 			i915_gem_request_put(fetch_and_zero(&workload->req));
 
+		complete_current_workload(gvt, ring_id);
+
 		if (need_force_wake)
 			intel_uncore_forcewake_put(gvt->dev_priv,
 					FORCEWAKE_ALL);