On Sun, Dec 21, 2025 at 09:42:00PM +0200, Khaled Saleh wrote:
From: khaled khaled.saleh.req@gmail.com
Full name, please.
The gb_audio_gb_get_topology() function performs multiple distinct operations: retrieving the topology size, allocating the topology buffer, and fetching the topology data. A TODO comment in the file notes that this logic should be split into separate calls.
Introduce helper functions for each step and update gb_audio_gb_get_topology() to use them.
This improves readability and maintainability without changing behavior.
Signed-off-by: Khaled Saleh khaled.saleh.req@gmail.com
drivers/staging/greybus/audio_gb.c | 47 +++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 11 deletions(-)
diff --git a/drivers/staging/greybus/audio_gb.c b/drivers/staging/greybus/audio_gb.c index 9d8994fdb41a..0d5109ec14f6 100644 --- a/drivers/staging/greybus/audio_gb.c +++ b/drivers/staging/greybus/audio_gb.c @@ -9,36 +9,61 @@ #include "audio_codec.h" /* TODO: Split into separate calls */ +static int gb_audio_topology_get_size(struct gb_connection *connection, u16 *size)
Use size_t for sizes.
+{
- struct gb_audio_get_topology_size_response resp;
- int ret;
- ret = gb_operation_sync(connection,
GB_AUDIO_TYPE_GET_TOPOLOGY_SIZE,NULL, 0,&resp, sizeof(resp));- if (ret)
return ret;- *size = le16_to_cpu(resp.size);
- return 0;
+}
+static struct gb_audio_topology *gb_audio_topology_alloc(u16 size)
Same.
+{
- if (size < sizeof(struct gb_audio_topology))
return NULL;- return kzalloc(size, GFP_KERNEL);
+}
+static int gb_audio_topology_fetch(struct gb_connection *connection,
struct gb_audio_topology *topo, u16 size)
Same.
It's fine for now since there is just one caller, but using anything other that size_t for sizes is just asking for integer overflow bugs.
regards, dan carpenter