[PATCH v2] drm/panfrost: Document base field location constraint in panfrost_gem_object

Daniel Vetter daniel at ffwll.ch
Fri Nov 29 18:40:38 UTC 2019


On Fri, Nov 29, 2019 at 03:19:36PM +0100, Boris Brezillon wrote:
> On Fri, 29 Nov 2019 14:13:33 +0000
> Steven Price <steven.price at arm.com> wrote:
> 
> > On 29/11/2019 13:56, Boris Brezillon wrote:
> > > I've spent hours chasing a memory corruption that was caused by
> > > insertion of an extra field field before ->base. Let's document the
> > > fact that base has to be the first field in panfrost_gem_object.
> > > 
> > > Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>  
> > 
> > This seems to be a limitation imposed by the gem_create_object()
> > callback - e.g. it's assumed that kfree() can be directly called on the
> > result. Useful to have the documentation though.
> 
> Oh, you're right, I didn't catch that one.

As a general rule of thumb, never insert anything before a struct member
called base. Even more so if it's of the same kind of $thing, but less
spezialed. This pattern is so common it's fairly often not documented
anywhere.
-Daniel

> 
> > 
> > Reviewed-by: Steven Price <steven.price at arm.com>
> > 
> > Steve
> > 
> > > ---
> > > Changes in v2:
> > > * Use the proper prefix in the subject line
> > > ---
> > >  drivers/gpu/drm/panfrost/panfrost_gem.h | 4 ++++
> > >  1 file changed, 4 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.h b/drivers/gpu/drm/panfrost/panfrost_gem.h
> > > index b3517ff9630c..d480261fc177 100644
> > > --- a/drivers/gpu/drm/panfrost/panfrost_gem.h
> > > +++ b/drivers/gpu/drm/panfrost/panfrost_gem.h
> > > @@ -10,6 +10,10 @@
> > >  struct panfrost_mmu;
> > >  
> > >  struct panfrost_gem_object {
> > > +	/*
> > > +	 * Must be the first element because we're using some of the
> > > +	 * drm_gem_shmem helpers.
> > > +	 */
> > >  	struct drm_gem_shmem_object base;
> > >  	struct sg_table *sgts;
> > >  
> > >   
> > 
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list