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

Stefan Wahren wahrenst at gmx.net
Wed Jun 5 03:11:41 PDT 2024


Hi Laurent,

Am 05.06.24 um 09:11 schrieb Laurent Pinchart:
> 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 ?
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?
>
>> 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




More information about the linux-arm-kernel mailing list