[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