diff --git a/src/audio/chain_dma.c b/src/audio/chain_dma.c index 3f865752c30c..6cc020e93846 100644 --- a/src/audio/chain_dma.c +++ b/src/audio/chain_dma.c @@ -398,6 +398,7 @@ __cold static void chain_release(struct comp_dev *dev) if (cd->dma_buffer) { buffer_free(cd->dma_buffer); + rfree(cd->dma_buffer); cd->dma_buffer = NULL; } } @@ -621,6 +622,7 @@ __cold static int chain_task_init(struct comp_dev *dev, uint8_t host_dma_id, uin ret = chain_init(dev, buff_addr, buff_size); if (ret < 0) { buffer_free(cd->dma_buffer); + rfree(cd->dma_buffer); cd->dma_buffer = NULL; goto error; } diff --git a/src/audio/copier/copier_dai.c b/src/audio/copier/copier_dai.c index c9740b8f9f4f..4d15c455ec41 100644 --- a/src/audio/copier/copier_dai.c +++ b/src/audio/copier/copier_dai.c @@ -385,8 +385,11 @@ __cold void copier_dai_free(struct copier_data *cd) rfree(cd->dd[i]); } /* only dai have multi endpoint case */ - if (cd->multi_endpoint_buffer) + if (cd->multi_endpoint_buffer) { buffer_free(cd->multi_endpoint_buffer); + rfree(cd->multi_endpoint_buffer); + cd->multi_endpoint_buffer = NULL; + } } int copier_dai_prepare(struct comp_dev *dev, struct copier_data *cd) diff --git a/src/audio/dai-legacy.c b/src/audio/dai-legacy.c index b212bb9ebdac..b148792bb942 100644 --- a/src/audio/dai-legacy.c +++ b/src/audio/dai-legacy.c @@ -714,6 +714,7 @@ void dai_common_reset(struct dai_data *dd, struct comp_dev *dev) if (dd->dma_buffer) { buffer_free(dd->dma_buffer); + rfree(dd->dma_buffer); dd->dma_buffer = NULL; } diff --git a/src/audio/dai-zephyr.c b/src/audio/dai-zephyr.c index c36a89a9c57b..58423db3a6d1 100644 --- a/src/audio/dai-zephyr.c +++ b/src/audio/dai-zephyr.c @@ -1105,6 +1105,7 @@ int dai_common_params(struct dai_data *dd, struct comp_dev *dev, */ if (err < 0) { buffer_free(dd->dma_buffer); + rfree(dd->dma_buffer); dd->dma_buffer = NULL; dma_sg_free(&config->elem_array); rfree(dd->z_config); @@ -1246,6 +1247,7 @@ void dai_common_reset(struct dai_data *dd, struct comp_dev *dev) if (dd->dma_buffer) { buffer_free(dd->dma_buffer); + rfree(dd->dma_buffer); dd->dma_buffer = NULL; } diff --git a/src/audio/host-legacy.c b/src/audio/host-legacy.c index e8d62e17301d..9713d5702fc3 100644 --- a/src/audio/host-legacy.c +++ b/src/audio/host-legacy.c @@ -911,6 +911,7 @@ void host_common_reset(struct host_data *hd, uint16_t state) /* free DMA buffer */ if (hd->dma_buffer) { buffer_free(hd->dma_buffer); + rfree(hd->dma_buffer); hd->dma_buffer = NULL; } diff --git a/src/audio/host-zephyr.c b/src/audio/host-zephyr.c index c9ada6b62165..755cd1b5422c 100644 --- a/src/audio/host-zephyr.c +++ b/src/audio/host-zephyr.c @@ -1131,6 +1131,7 @@ void host_common_reset(struct host_data *hd, uint16_t state) /* free DMA buffer */ if (hd->dma_buffer) { buffer_free(hd->dma_buffer); + rfree(hd->dma_buffer); hd->dma_buffer = NULL; } diff --git a/src/ipc/ipc3/helper.c b/src/ipc/ipc3/helper.c index 6eb708a55b91..219c267113dc 100644 --- a/src/ipc/ipc3/helper.c +++ b/src/ipc/ipc3/helper.c @@ -495,6 +495,7 @@ int ipc_buffer_new(struct ipc *ipc, const struct sof_ipc_buffer *desc) sizeof(struct ipc_comp_dev)); if (!ibd) { buffer_free(buffer); + rfree(buffer); return -ENOMEM; } ibd->cb = buffer;