On Wed, Jun 15, 2022 at 12:13:46AM +0530, Ramalingam C wrote: > From: Niranjana Vishwanathapura <niranjana.vishwanathap...@intel.com> > > 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.vishwanathap...@intel.com> > Suggested-by: Matthew Brost <matthew.br...@intel.com>
Reviewed-by: Matthew Brost <matthew.br...@intel.com> > --- > drivers/gpu/drm/i915/i915_request.c | 3 ++- > drivers/gpu/drm/i915/i915_request.h | 2 ++ > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_request.c > b/drivers/gpu/drm/i915/i915_request.c > index 73d5195146b0..7f6998bf390c 100644 > --- a/drivers/gpu/drm/i915/i915_request.c > +++ b/drivers/gpu/drm/i915/i915_request.c > @@ -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) > diff --git a/drivers/gpu/drm/i915/i915_request.h > b/drivers/gpu/drm/i915/i915_request.h > index 28b1f9db5487..47041ec68df8 100644 > --- a/drivers/gpu/drm/i915/i915_request.h > +++ b/drivers/gpu/drm/i915/i915_request.h > @@ -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 > -- > 2.20.1 >