diff --git a/src/audio/module_adapter/module_adapter_ipc4.c b/src/audio/module_adapter/module_adapter_ipc4.c index 060cef446f73..1fa4267750c2 100644 --- a/src/audio/module_adapter/module_adapter_ipc4.c +++ b/src/audio/module_adapter/module_adapter_ipc4.c @@ -48,7 +48,7 @@ int module_adapter_init_data(struct comp_dev *dev, return -EINVAL; dst->base_cfg = cfg->base_cfg; - dst->size = cfgsz; + dst->size = cfgsz - sizeof(cfg->base_cfg); if (cfgsz >= sizeof(*cfg)) { int n_in = cfg->base_cfg_ext.nb_input_pins; diff --git a/src/audio/src/src_ipc4.c b/src/audio/src/src_ipc4.c index c337f34b404c..70d0a2437549 100644 --- a/src/audio/src/src_ipc4.c +++ b/src/audio/src/src_ipc4.c @@ -186,10 +186,12 @@ int src_init(struct processing_module *mod) struct module_config *cfg = &md->cfg; struct comp_dev *dev = mod->dev; struct comp_data *cd = NULL; + const size_t cfg_size_expect = sizeof(cd->ipc_config) - + sizeof(struct ipc4_base_module_cfg); comp_dbg(dev, "src_init()"); - if (!cfg->init_data || cfg->size != sizeof(cd->ipc_config)) { + if (!cfg->init_data || cfg->size != cfg_size_expect) { comp_err(dev, "src_init(): Missing or bad size (%u) init data", cfg->size); return -EINVAL;