[Mesa-dev] [PATCH 8/9] panfrost: Handle the bo == NULL case in panfrost_bo_[un]reference()
Boris Brezillon
boris.brezillon at collabora.com
Fri Aug 2 15:20:21 UTC 2019
On Fri, 2 Aug 2019 08:14:05 -0700
Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com> wrote:
> Is there any cleanup we can simultaneously? (Where the check was done
> outside?) Or is this a futureproofing?
Was hitting a NULL pointer dereference when on the
panfrost_bo_unreference(job->polygon_list) done in panfrost_free_job().
Don't know having a NULL polygon_list is valid case (I guess that's
possible for a job that does not involve the tiler) but I was facing
this problem when running the deqp testsuite.
>
> On Fri, Aug 02, 2019 at 12:12:56PM +0200, Boris Brezillon wrote:
> > Allows us to pass BOs without checking if they're NULL or not.
> >
> > Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
> > ---
> > src/gallium/drivers/panfrost/pan_resource.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c
> > index 71da383d4c7a..f74a39555b45 100644
> > --- a/src/gallium/drivers/panfrost/pan_resource.c
> > +++ b/src/gallium/drivers/panfrost/pan_resource.c
> > @@ -443,12 +443,16 @@ panfrost_resource_create(struct pipe_screen *screen,
> > void
> > panfrost_bo_reference(struct panfrost_bo *bo)
> > {
> > - pipe_reference(NULL, &bo->reference);
> > + if (bo)
> > + pipe_reference(NULL, &bo->reference);
> > }
> >
> > void
> > panfrost_bo_unreference(struct pipe_screen *screen, struct panfrost_bo *bo)
> > {
> > + if (!bo)
> > + return;
> > +
> > /* When the reference count goes to zero, we need to cleanup */
> >
> > if (pipe_reference(&bo->reference, NULL))
> > --
> > 2.21.0
> >
More information about the mesa-dev
mailing list