From ff6b9605c246a7055e3f7785aab30c2f1112f6eb Mon Sep 17 00:00:00 2001 From: Jaroslaw Stelter Date: Mon, 5 Dec 2022 17:43:13 +0100 Subject: [PATCH 1/2] library_manager: Fix dma_ext initialization issue In the lib_manager_dma_deinit() function proper checks for dma_ext structure fields must be added to avoid calling dma api with uninitialized parameters. Signed-off-by: Jaroslaw Stelter --- src/library_manager/lib_manager.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/library_manager/lib_manager.c b/src/library_manager/lib_manager.c index 88042783cc31..6d2104d6b25c 100644 --- a/src/library_manager/lib_manager.c +++ b/src/library_manager/lib_manager.c @@ -426,6 +426,8 @@ static int lib_manager_dma_init(struct lib_manager_dma_ext *dma_ext, uint32_t dm int chan_index; int ret; + /* Initialize dma_ext with zeros */ + memset(dma_ext, 0, sizeof(struct lib_manager_dma_ext)); /* request DMA in the dir HMEM->LMEM */ dma_ext->dma = dma_get(DMA_DIR_HMEM_TO_LMEM, 0, DMA_DEV_HOST, DMA_ACCESS_EXCLUSIVE); @@ -461,8 +463,11 @@ static int lib_manager_dma_init(struct lib_manager_dma_ext *dma_ext, uint32_t dm static int lib_manager_dma_deinit(struct lib_manager_dma_ext *dma_ext, uint32_t dma_id) { - dma_release_channel(dma_ext->dma->z_dev, dma_id); - dma_put(dma_ext->dma); + if (dma_ext->dma) { + dma_put(dma_ext->dma); + if (dma_ext->dma->z_dev) + dma_release_channel(dma_ext->dma->z_dev, dma_id); + } return 0; } From e1f0844fed76b1c316b65d384290294735231c60 Mon Sep 17 00:00:00 2001 From: Jaroslaw Stelter Date: Mon, 5 Dec 2022 17:46:06 +0100 Subject: [PATCH 2/2] iadk modules: Add variable initialization This patch adds initialization of module_size_ variable in SystemAgent() creator. Signed-off-by: Jaroslaw Stelter --- src/audio/module_adapter/iadk/system_agent.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audio/module_adapter/iadk/system_agent.cpp b/src/audio/module_adapter/iadk/system_agent.cpp index fc0e11bb6d1b..6e03a065d49f 100644 --- a/src/audio/module_adapter/iadk/system_agent.cpp +++ b/src/audio/module_adapter/iadk/system_agent.cpp @@ -81,10 +81,10 @@ SystemAgent::SystemAgent(uint32_t module_id, core_id_(core_id), module_id_(module_id), instance_id_(instance_id), - module_handle_(NULL) + module_handle_(NULL), + module_size_(0) {} - void SystemAgent::CheckIn(ProcessingModuleInterface& processing_module, ModuleHandle &module_handle, LogHandle *&log_handle)