From 904a633351001557d9154f43018f78849c3897be Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Fri, 5 Aug 2022 15:01:44 +0200 Subject: [PATCH] eq-iir: eq_iir_verify_params() has to acquire buffers Failing to properly acquire buffer objects for access leads to a CI regression. BugLink: https://github.com/thesofproject/sof/issues/6075 Signed-off-by: Guennadi Liakhovetski --- src/audio/eq_iir/eq_iir.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/audio/eq_iir/eq_iir.c b/src/audio/eq_iir/eq_iir.c index 546701a85..283fc145d 100644 --- a/src/audio/eq_iir/eq_iir.c +++ b/src/audio/eq_iir/eq_iir.c @@ -671,8 +671,8 @@ static void eq_iir_free(struct comp_dev *dev) static int eq_iir_verify_params(struct comp_dev *dev, struct sof_ipc_stream_params *params) { - struct comp_buffer *sourceb; - struct comp_buffer *sinkb; + struct comp_buffer *sourceb, *sinkb; + struct comp_buffer __sparse_cache *source_c, *sink_c; uint32_t buffer_flag; int ret; @@ -683,6 +683,8 @@ static int eq_iir_verify_params(struct comp_dev *dev, sink_list); sinkb = list_first_item(&dev->bsink_list, struct comp_buffer, source_list); + source_c = buffer_acquire(sourceb); + sink_c = buffer_acquire(sinkb); /* we check whether we can support frame_fmt conversion (whether we have * such conversion function) due to source and sink buffer frame_fmt's. @@ -690,11 +692,14 @@ static int eq_iir_verify_params(struct comp_dev *dev, * pcm frame_fmt and will not make any conversion (sink and source * frame_fmt will be equal). */ - buffer_flag = eq_iir_find_func(sourceb->stream.frame_fmt, - sinkb->stream.frame_fmt, fm_configured, + buffer_flag = eq_iir_find_func(source_c->stream.frame_fmt, + sink_c->stream.frame_fmt, fm_configured, ARRAY_SIZE(fm_configured)) ? BUFF_PARAMS_FRAME_FMT : 0; + buffer_release(sink_c); + buffer_release(source_c); + ret = comp_verify_params(dev, buffer_flag, params); if (ret < 0) { comp_err(dev, "eq_iir_verify_params(): comp_verify_params() failed.");