[PATCH 05/11] staging: vchiq_arm: Get the rid off struct vchiq_2835_state

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Jun 5 00:11:09 PDT 2024


Hi Stefan,

Thank you for the patch.

On Tue, Jun 04, 2024 at 07:28:58PM +0200, Stefan Wahren wrote:
> The whole benefit of this encapsulating struct is questionable.
> It just stores a flag to signalize the init state of vchiq_arm_state.
> Beside the fact this flag is set too soon, the access to uninitialized
> members should be avoided per design.

Do you have plans to address the design ?

> So initialize vchiq_arm_state
> properly before assign it directly to vchiq_state.
> 
> Signed-off-by: Stefan Wahren <wahrenst at gmx.net>
> ---
>  .../interface/vchiq_arm/vchiq_arm.c           | 25 +++++--------------
>  1 file changed, 6 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> index 515cdcba043d..98a0b2d52af5 100644
> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> @@ -109,11 +109,6 @@ struct vchiq_arm_state {
>  	int first_connect;
>  };
> 
> -struct vchiq_2835_state {
> -	int inited;
> -	struct vchiq_arm_state arm_state;
> -};
> -
>  struct vchiq_pagelist_info {
>  	struct pagelist *pagelist;
>  	size_t pagelist_buffer_size;
> @@ -613,29 +608,21 @@ vchiq_arm_init_state(struct vchiq_state *state,
>  int
>  vchiq_platform_init_state(struct vchiq_state *state)
>  {
> -	struct vchiq_2835_state *platform_state;
> +	struct vchiq_arm_state *platform_state;
> 
> -	state->platform_state = kzalloc(sizeof(*platform_state), GFP_KERNEL);
> -	if (!state->platform_state)
> +	platform_state = kzalloc(sizeof(*platform_state), GFP_KERNEL);
> +	if (!platform_state)
>  		return -ENOMEM;
> 
> -	platform_state = (struct vchiq_2835_state *)state->platform_state;
> -
> -	platform_state->inited = 1;
> -	vchiq_arm_init_state(state, &platform_state->arm_state);
> +	vchiq_arm_init_state(state, platform_state);
> +	state->platform_state = (struct opaque_platform_state *)platform_state;
> 
>  	return 0;
>  }
> 
>  static struct vchiq_arm_state *vchiq_platform_get_arm_state(struct vchiq_state *state)
>  {
> -	struct vchiq_2835_state *platform_state;
> -
> -	platform_state   = (struct vchiq_2835_state *)state->platform_state;
> -
> -	WARN_ON_ONCE(!platform_state->inited);
> -
> -	return &platform_state->arm_state;
> +	return (struct vchiq_arm_state *)state->platform_state;
>  }
> 
>  void

-- 
Regards,

Laurent Pinchart



More information about the linux-arm-kernel mailing list