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....@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
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to