[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