From 31e22e637320f7b41bd667b7f23990e6c778822b Mon Sep 17 00:00:00 2001 From: Curtis Malainey Date: Mon, 30 Sep 2024 15:47:13 -0700 Subject: [PATCH] buffer: init channels to 2 On initialization we use rzalloc which 0s out all fields. We later call audio_stream_recalc_align which uses the frame_bytes to align the buffer. This is problematic as clz() is passed the size of the frame size which is 0 since channel is 0 and passing 0 to clz is undefined behaviour. Signed-off-by: Curtis Malainey --- src/audio/buffers/comp_buffer.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/audio/buffers/comp_buffer.c b/src/audio/buffers/comp_buffer.c index 7aa6c158124c..89c719057aa5 100644 --- a/src/audio/buffers/comp_buffer.c +++ b/src/audio/buffers/comp_buffer.c @@ -218,6 +218,8 @@ static struct comp_buffer *buffer_alloc_struct(void *stream_addr, size_t size, u } buffer->caps = caps; + /* Force channels to 2 for init to prevent bad call to clz in buffer_init_stream */ + buffer->stream.runtime_stream_params.channels = 2; audio_buffer_init(&buffer->audio_buffer, BUFFER_TYPE_LEGACY_BUFFER, is_shared, &comp_buffer_source_ops, &comp_buffer_sink_ops, &audio_buffer_ops,