Re: [PATCH] drm/vc4: Rework the structure convertion functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux