Skip to content

Commit 29f3ac6

Browse files
lyakhkv2019i
authored andcommitted
pipeline: fix a potential divizion by zero
If a component doesn't implement .get_attribute(), pipeline_get_dai_comp_latency() will divide by uninitialised values, possibly zero. To fix that initialise those fields to 0 and check that they have been changed to non-zero before division. Suggested-by: Rander Wang <rander.wang@intel.com> Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
1 parent 53c6bac commit 29f3ac6

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

src/audio/pipeline/pipeline-graph.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -514,8 +514,8 @@ struct comp_dev *pipeline_get_dai_comp_latency(uint32_t pipeline_id, uint32_t *l
514514
while (ipc_sink) {
515515
struct comp_buffer *buffer;
516516
uint64_t input_data, output_data;
517-
struct ipc4_base_module_cfg input_base_cfg;
518-
struct ipc4_base_module_cfg output_base_cfg;
517+
struct ipc4_base_module_cfg input_base_cfg = {.ibs = 0};
518+
struct ipc4_base_module_cfg output_base_cfg = {.obs = 0};
519519
int ret;
520520

521521
/* Calculate pipeline latency */
@@ -530,7 +530,7 @@ struct comp_dev *pipeline_get_dai_comp_latency(uint32_t pipeline_id, uint32_t *l
530530
if (ret < 0)
531531
return NULL;
532532

533-
if (input_data && output_data)
533+
if (input_data && output_data && input_base_cfg.ibs && output_base_cfg.obs)
534534
*latency += input_data / input_base_cfg.ibs -
535535
output_data / output_base_cfg.obs;
536536

0 commit comments

Comments
 (0)