[PATCH 05/11] staging: vchiq_arm: Get the rid off struct vchiq_2835_state
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Jun 11 14:22:53 PDT 2024
Hi Stefan,
On Wed, Jun 05, 2024 at 12:11:41PM +0200, Stefan Wahren wrote:
> Am 05.06.24 um 09:11 schrieb Laurent Pinchart:
> > 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 ?
>
> by using kzalloc and assigning platform_state at the end of
> vchiq_platform_init_state, i would consider this as fulfilled. Or do you
> care about the possible platform_state NULL pointer?
Reading the commit message, I thought you meant further changes were
need to fix the design. A clarification in the commit message could be
useful.
> >> 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