For some dsp init error path, irq and few more resources are not freed.
This results in oops. So, fix it by freeing up the resources on ipc_init
failure.
Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com>
Acked-By: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
SKL_ADSP_W0_UP_SZ, BXT_ADSP_SRAM1_BASE, SKL_ADSP_W1_SZ);
ret = skl_ipc_init(dev, skl);
- if (ret)
+ if (ret) {
+ skl_dsp_free(sst);
return ret;
+ }
/* set the D0i3 check */
skl->ipc.ops.check_dsp_lp_on = skl_ipc_check_D0i0;
CNL_ADSP_W1_SZ);
ret = cnl_ipc_init(dev, cnl);
- if (ret)
+ if (ret) {
+ skl_dsp_free(sst);
return ret;
+ }
cnl->boot_complete = false;
init_waitqueue_head(&cnl->boot_wait);
SKL_ADSP_W0_UP_SZ, SKL_ADSP_SRAM1_BASE, SKL_ADSP_W1_SZ);
ret = skl_ipc_init(dev, skl);
- if (ret)
+ if (ret) {
+ skl_dsp_free(sst);
return ret;
+ }
sst->fw_ops = skl_fw_ops;