From 25db136bb45fc7dc6f11c3157990dce9f12b7cbb Mon Sep 17 00:00:00 2001 From: Prince Raichura Date: Wed, 12 Aug 2026 17:04:53 +0530 Subject: [PATCH] agm: service: fix param_list truncation in ACDB tunnel tag-data path In graph_get_tckv_data_from_acdb(), param_list holds a list of 32-bit words [module_instance_id, num_params, param_id] passed to gsl_get/set_*_data_from_acdb(). It is allocated as PARAM_LIST_MAX_IDX * sizeof(uint32_t) but was declared uint8_t*, so the indexed writes truncate each 32-bit field to its low byte. ACDB is then queried with a corrupt module_instance_id (e.g. 0x0026016e instead of 0x416e), returns "module instance not found", and the call fails, breaking Generic Effects Framework reads over the ACDB tunnel. Declare param_list as uint32_t* so the fields are written full width. The (uint8_t *)param_list casts already present at the call sites keep the gsl API type (uint8_t *) and the GCC 14.2 build clean. Signed-off-by: Prince Raichura --- service/src/graph.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/src/graph.c b/service/src/graph.c index 67d31ad0..b838f7d3 100644 --- a/service/src/graph.c +++ b/service/src/graph.c @@ -2176,7 +2176,7 @@ int graph_get_tckv_data_from_acdb( uint32_t *ptr = NULL; size_t query_payload_size = *payload_size; struct apm_module_param_data_t *param = (apm_module_param_data_t *)payload; - uint8_t *param_list; + uint32_t *param_list; if (!payload) { return -EINVAL;