drm/i915: Do not access rq->engine without a reference
In i915_fence_get_driver_name(), user may not hold a reference to rq->engine. Hence do not access it. Instead, store required device private pointer in 'rq->i915' and use it. Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> Suggested-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Signed-off-by: Ramalingam C <ramalingam.c@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220614184348.23746-2-ramalingam.c@intel.com
This commit is contained in:
parent
7d8097073c
commit
7307e91bfc
@ -60,7 +60,7 @@ static struct kmem_cache *slab_execute_cbs;
|
||||
|
||||
static const char *i915_fence_get_driver_name(struct dma_fence *fence)
|
||||
{
|
||||
return dev_name(to_request(fence)->engine->i915->drm.dev);
|
||||
return dev_name(to_request(fence)->i915->drm.dev);
|
||||
}
|
||||
|
||||
static const char *i915_fence_get_timeline_name(struct dma_fence *fence)
|
||||
@ -937,6 +937,7 @@ __i915_request_create(struct intel_context *ce, gfp_t gfp)
|
||||
rq->engine = ce->engine;
|
||||
rq->ring = ce->ring;
|
||||
rq->execution_mask = ce->engine->mask;
|
||||
rq->i915 = ce->engine->i915;
|
||||
|
||||
ret = intel_timeline_get_seqno(tl, rq, &seqno);
|
||||
if (ret)
|
||||
|
@ -196,6 +196,8 @@ struct i915_request {
|
||||
struct dma_fence fence;
|
||||
spinlock_t lock;
|
||||
|
||||
struct drm_i915_private *i915;
|
||||
|
||||
/**
|
||||
* Context and ring buffer related to this request
|
||||
* Contexts are refcounted, so when this request is associated with a
|
||||
|
Loading…
x
Reference in New Issue
Block a user