]> git.hungrycats.org Git - linux/commitdiff
staging: vchiq_arm: Get the rid off struct vchiq_2835_state
authorStefan Wahren <wahrenst@gmx.net>
Fri, 21 Jun 2024 13:19:53 +0000 (15:19 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 22 Nov 2024 14:37:32 +0000 (15:37 +0100)
[ Upstream commit 4e2766102da632f26341d5539519b0abf73df887 ]

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. So initialize vchiq_arm_state properly before
assign it directly to vchiq_state.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Link: https://lore.kernel.org/r/20240621131958.98208-6-wahrenst@gmx.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: 404b739e8955 ("staging: vchiq_arm: Use devm_kzalloc() for vchiq_arm_state allocation")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c

index 705c5e283c27b085c62731af26713b404e3364e8..bb1342223ad0d70af74da024a4345839b3f4fa32 100644 (file)
@@ -115,11 +115,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;
@@ -574,29 +569,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