diff options
author | Changbin Du <changbin.du@intel.com> | 2017-01-05 13:28:05 +0800 |
---|---|---|
committer | Zhenyu Wang <zhenyuw@linux.intel.com> | 2017-01-09 11:05:56 +0800 |
commit | 2e51ef32b0d66fcd5fe45c437cf7c6aef8350746 (patch) | |
tree | 6b4481f7f856c56136a5a9617d06a2cf3de58647 /drivers/gpu/drm/i915 | |
parent | 2fcdb66364ee467d69228a3d2ea074498c177211 (diff) | |
download | op-kernel-dev-2e51ef32b0d66fcd5fe45c437cf7c6aef8350746.zip op-kernel-dev-2e51ef32b0d66fcd5fe45c437cf7c6aef8350746.tar.gz |
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>
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r-- | drivers/gpu/drm/i915/gvt/scheduler.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c index 4db2422..c694dd0 100644 --- a/drivers/gpu/drm/i915/gvt/scheduler.c +++ b/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); |