[Intel-gfx] [PATCH 4/8] drm/i915: NULL checking when capturing buffer objects during error state capture

Chris Wilson chris at chris-wilson.co.uk
Fri Oct 9 01:47:32 PDT 2015


On Fri, Oct 09, 2015 at 10:32:11AM +0200, Daniel Vetter wrote:
> On Thu, Oct 08, 2015 at 07:31:36PM +0100, Tomas Elf wrote:
> > In the past vmas have sometimes turned out to be NULL when capturing buffer
> > objects during error state capture. To avoid NULL pointer exceptions throw a
> > WARNING and exit early and be prepared for the error state not being fully
> > accurate following this point.
> > 
> > Signed-off-by: Tomas Elf <tomas.elf at intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_gpu_error.c | 10 +++++++++-
> >  1 file changed, 9 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
> > index cc75ca4..ae24971 100644
> > --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> > +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> > @@ -691,9 +691,17 @@ unwind:
> >  static void capture_bo(struct drm_i915_error_buffer *err,
> >  		       struct i915_vma *vma)
> >  {
> > -	struct drm_i915_gem_object *obj = vma->obj;
> > +	struct drm_i915_gem_object *obj;
> >  	int i;
> >  
> > +	if (WARN_ON(!vma))
> > +	    return;
> 
> If we rcu-protect the vma lists and vmas themselves then this can't
> happen.
> 
> > +
> > +	if (WARN_ON(!vma->obj))
> > +	    return;
> 
> Again we probably need to rcu-protect this, and more important we need to
> make sure the compiler doesn't do crap. So
> 
> 	obj = rcu_derefence(vma->obj)
> 	if (!obj)
> 		return;

The other issue is that we don't actually want capture_bo() but capture_vma().
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list