diff --git a/src/module/audio/sink_api.c b/src/module/audio/sink_api.c index c0a94031f105..fb576adc40e7 100644 --- a/src/module/audio/sink_api.c +++ b/src/module/audio/sink_api.c @@ -109,7 +109,15 @@ EXPORT_SYMBOL(sink_get_frame_bytes); size_t sink_get_free_frames(struct sof_sink *sink) { - return sink_get_free_size(sink) / sink_get_frame_bytes(sink); + size_t frame_bytes = sink_get_frame_bytes(sink); + + /* frame_bytes is channels * sample_size and both are host-influenced; + * guard against a zero divisor (e.g. channels == 0) + */ + if (!frame_bytes) + return 0; + + return sink_get_free_size(sink) / frame_bytes; } EXPORT_SYMBOL(sink_get_free_frames);