From d467eee4ca227b234ca4966933474d0c9a7574c3 Mon Sep 17 00:00:00 2001 From: Jaroslaw Stelter Date: Wed, 6 Dec 2023 16:28:58 +0100 Subject: [PATCH] module: sink: source: Prevent division by zero issue This patch prevents division by zero, when source_get_frame_bytes() routine returns 0. This change fixes issue https://github.com/thesofproject/sof/issues/8414. The problem happens due to race condition during pipeline pause operation. The exact failure mechanism require additional debug, but checking frame_bytes value before division prevents exceptions. Signed-off-by: Jaroslaw Stelter --- src/module/audio/source_api.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/module/audio/source_api.c b/src/module/audio/source_api.c index 2f589524621f..09ee4841b18b 100644 --- a/src/module/audio/source_api.c +++ b/src/module/audio/source_api.c @@ -53,6 +53,10 @@ size_t source_get_frame_bytes(struct sof_source *source) size_t source_get_data_frames_available(struct sof_source *source) { - return source_get_data_available(source) / - source_get_frame_bytes(source); + uint32_t frame_bytes = source_get_frame_bytes(source); + + if (frame_bytes > 0) + return source_get_data_available(source) / frame_bytes; + else + return 0; }