]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
ASoC: SOF: core: free trace on errors
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Fri, 21 Feb 2020 09:00:46 +0000 (17:00 +0800)
committerKhalid Elmously <khalid.elmously@canonical.com>
Fri, 13 Mar 2020 03:16:37 +0000 (23:16 -0400)
BugLink: https://bugs.launchpad.net/bugs/1861837
free_trace() is not called on probe errors, fix

Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20200124213625.30186-3-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
(backported from commit 37e97e6faeabda405d0c4319f8419dcc3da14b2b)
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Kleber Souza <kleber.souza@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
sound/soc/sof/core.c

index 4b89bde4198cd6553f320abc2ee95e9d3bf4da0e..5f60ed139ed46f73cadce3de96766a12d7dd7d08 100644 (file)
@@ -414,7 +414,7 @@ static int sof_probe_continue(struct snd_sof_dev *sdev)
        if (ret < 0) {
                dev_err(sdev->dev,
                        "error: failed to register DSP DAI driver %d\n", ret);
-               goto fw_run_err;
+               goto fw_trace_err;
        }
 
        drv_name = plat_data->machine->drv_name;
@@ -428,7 +428,7 @@ static int sof_probe_continue(struct snd_sof_dev *sdev)
 
        if (IS_ERR(plat_data->pdev_mach)) {
                ret = PTR_ERR(plat_data->pdev_mach);
-               goto fw_run_err;
+               goto fw_trace_err;
        }
 
        dev_dbg(sdev->dev, "created machine %s\n",
@@ -440,6 +440,8 @@ static int sof_probe_continue(struct snd_sof_dev *sdev)
        return 0;
 
 #if !IS_ENABLED(CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE)
+fw_trace_err:
+       snd_sof_free_trace(sdev);
 fw_run_err:
        snd_sof_fw_unload(sdev);
 fw_load_err:
@@ -457,6 +459,7 @@ dbg_err:
         * snd_sof_device_remove() when the PCI/ACPI device is removed
         */
 
+fw_trace_err:
 fw_run_err:
 fw_load_err:
 ipc_err: