s/convertion/conversion in subject line On Wed, 28 Oct 2020 at 12:37, Maxime Ripard <maxime@xxxxxxxxxx> wrote: > > Most of the helpers to retrieve vc4 structures from the DRM base structures > rely on the fact that the first member of the vc4 structure is the DRM one > and just cast the pointers between them. > > However, this is pretty fragile especially since there's no check to make > sure that the DRM structure is indeed at the offset 0 in the structure, so > let's use container_of to make it more robust. > > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> Otherwise Reviewed-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/vc4/vc4_drv.h | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h > index 236dde0bb9a1..836fdca5e643 100644 > --- a/drivers/gpu/drm/vc4/vc4_drv.h > +++ b/drivers/gpu/drm/vc4/vc4_drv.h > @@ -287,7 +287,7 @@ struct vc4_bo { > static inline struct vc4_bo * > to_vc4_bo(struct drm_gem_object *bo) > { > - return (struct vc4_bo *)bo; > + return container_of(to_drm_gem_cma_obj(bo), struct vc4_bo, base); > } > > struct vc4_fence { > @@ -300,7 +300,7 @@ struct vc4_fence { > static inline struct vc4_fence * > to_vc4_fence(struct dma_fence *fence) > { > - return (struct vc4_fence *)fence; > + return container_of(fence, struct vc4_fence, base); > } > > struct vc4_seqno_cb { > @@ -347,7 +347,7 @@ struct vc4_plane { > static inline struct vc4_plane * > to_vc4_plane(struct drm_plane *plane) > { > - return (struct vc4_plane *)plane; > + return container_of(plane, struct vc4_plane, base); > } > > enum vc4_scaling_mode { > @@ -423,7 +423,7 @@ struct vc4_plane_state { > static inline struct vc4_plane_state * > to_vc4_plane_state(struct drm_plane_state *state) > { > - return (struct vc4_plane_state *)state; > + return container_of(state, struct vc4_plane_state, base); > } > > enum vc4_encoder_type { > @@ -499,7 +499,7 @@ struct vc4_crtc { > static inline struct vc4_crtc * > to_vc4_crtc(struct drm_crtc *crtc) > { > - return (struct vc4_crtc *)crtc; > + return container_of(crtc, struct vc4_crtc, base); > } > > static inline const struct vc4_crtc_data * > @@ -537,7 +537,7 @@ struct vc4_crtc_state { > static inline struct vc4_crtc_state * > to_vc4_crtc_state(struct drm_crtc_state *crtc_state) > { > - return (struct vc4_crtc_state *)crtc_state; > + return container_of(crtc_state, struct vc4_crtc_state, base); > } > > #define V3D_READ(offset) readl(vc4->v3d->regs + offset) > -- > 2.26.2 > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel