[PATCH v5 06/12] drm/cma-helper: Turn to_drm_gem_cma_obj() into a macro

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Nov 8 06:21:42 UTC 2017


Hi Noralf,

Thank you for the patch.

On Tuesday, 7 November 2017 21:13:42 EET Noralf Trønnes wrote:
> This allows the argument to be a const.
> 
> The other option was to keep it an inline function and make the argument
> a const:
> 
> static inline struct drm_gem_cma_object *
> to_drm_gem_cma_obj(const struct drm_gem_object *gem_obj)
> {
> 	return container_of(gem_obj, struct drm_gem_cma_object, base);
> }
> 
> This will happily return a non-const pointer to the drm_gem_cma_object
> based on a const pointer to the contained drm_gem_object, thus creating
> const-safety problems.
> 
> There was an attempt to fix the problem in the container_of() macro
> itself (see https://lkml.org/lkml/2017/5/19/381) but the patch seems to
> have fallen through the cracks. It would require turning this inline
> function into a macro.
> 
> By making this a macro now, we will benefit from a possible future
> enhancement of container_of(). We don't loose type checking by doing
> this, container_of() takes care of that.
> 
> Suggested-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Signed-off-by: Noralf Trønnes <noralf at tronnes.org>

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  include/drm/drm_gem_cma_helper.h | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/include/drm/drm_gem_cma_helper.h
> b/include/drm/drm_gem_cma_helper.h index 58a739bf15f1..7a3dcf0cf289 100644
> --- a/include/drm/drm_gem_cma_helper.h
> +++ b/include/drm/drm_gem_cma_helper.h
> @@ -20,11 +20,8 @@ struct drm_gem_cma_object {
>  	void *vaddr;
>  };
> 
> -static inline struct drm_gem_cma_object *
> -to_drm_gem_cma_obj(struct drm_gem_object *gem_obj)
> -{
> -	return container_of(gem_obj, struct drm_gem_cma_object, base);
> -}
> +#define to_drm_gem_cma_obj(gem_obj) \
> +	container_of(gem_obj, struct drm_gem_cma_object, base)
> 
>  #ifndef CONFIG_MMU
>  #define DRM_GEM_CMA_UNMAPPED_AREA_FOPS \


-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list