Skip to content

Commit a10e69d

Browse files
singalsutlauda
authored andcommitted
EQ: Fix IPC data copy size in new() method in IIR and FIR
The used memcpy_s() has wrong size for destination. It causes the prepare() method to fail later in component life cycle into sink buffer resize due to zero config->periods_sink value. This patch fixes the fail of pipeline instantantion with IIR and FIR EQ components. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
1 parent 742f83b commit a10e69d

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

‎src/audio/eq_fir.c‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ static struct comp_dev *eq_fir_new(struct sof_ipc_comp *comp)
376376
{
377377
struct comp_dev *dev;
378378
struct comp_data *cd;
379+
struct sof_ipc_comp_process *fir;
379380
struct sof_ipc_comp_process *ipc_fir
380381
= (struct sof_ipc_comp_process *)comp;
381382
size_t bs = ipc_fir->size;
@@ -402,8 +403,9 @@ static struct comp_dev *eq_fir_new(struct sof_ipc_comp *comp)
402403
if (!dev)
403404
return NULL;
404405

405-
err = memcpy_s(&dev->comp, sizeof(dev->comp), comp,
406-
sizeof(struct sof_ipc_comp_process));
406+
fir = (struct sof_ipc_comp_process *)&dev->comp;
407+
err = memcpy_s(fir, sizeof(*fir),
408+
ipc_fir, sizeof(struct sof_ipc_comp_process));
407409

408410
cd = rzalloc(RZONE_RUNTIME, SOF_MEM_CAPS_RAM, sizeof(*cd));
409411
if (!cd) {

‎src/audio/eq_iir.c‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,7 @@ static struct comp_dev *eq_iir_new(struct sof_ipc_comp *comp)
481481
{
482482
struct comp_dev *dev;
483483
struct comp_data *cd;
484+
struct sof_ipc_comp_process *iir;
484485
struct sof_ipc_comp_process *ipc_iir =
485486
(struct sof_ipc_comp_process *)comp;
486487
size_t bs = ipc_iir->size;
@@ -507,8 +508,9 @@ static struct comp_dev *eq_iir_new(struct sof_ipc_comp *comp)
507508
if (!dev)
508509
return NULL;
509510

510-
err = memcpy_s(&dev->comp, sizeof(dev->comp),
511-
comp, sizeof(struct sof_ipc_comp_process));
511+
iir = (struct sof_ipc_comp_process *)&dev->comp;
512+
err = memcpy_s(iir, sizeof(*iir),
513+
ipc_iir, sizeof(struct sof_ipc_comp_process));
512514

513515
cd = rzalloc(RZONE_RUNTIME, SOF_MEM_CAPS_RAM, sizeof(*cd));
514516
if (!cd) {

0 commit comments

Comments
 (0)