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@xxxxxxx> > --- > .../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