if (ret < 0) {
                dev_err(sdev->dev, "failed to register IRQ %d\n",
                        sdev->ipc_irq);
-               pci_dev_put(adata->smn_dev);
-               return ret;
+               goto free_smn_dev;
        }
 
        ret = acp_init(sdev);
-       if (ret < 0) {
-               free_irq(sdev->ipc_irq, sdev);
-               pci_dev_put(adata->smn_dev);
-               return ret;
-       }
+       if (ret < 0)
+               goto free_ipc_irq;
 
        sdev->dsp_box.offset = 0;
        sdev->dsp_box.size = BOX_SIZE_512;
        acp_dsp_stream_init(sdev);
 
        return 0;
+
+free_ipc_irq:
+       free_irq(sdev->ipc_irq, sdev);
+free_smn_dev:
+       pci_dev_put(adata->smn_dev);
+       return ret;
 }
 EXPORT_SYMBOL_NS(amd_sof_acp_probe, SND_SOC_SOF_AMD_COMMON);