OSDN Git Service

ASoC: hdac_hda: call patch_ops.free() on probe error
authorKai Vehmanen <kai.vehmanen@linux.intel.com>
Fri, 17 Jul 2020 10:19:48 +0000 (13:19 +0300)
committerMark Brown <broonie@kernel.org>
Wed, 22 Jul 2020 13:31:56 +0000 (14:31 +0100)
Add error handling for patch_ops in hdac_hda_codec_probe().

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20200717101950.3885187-1-kai.vehmanen@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/hdac_hda.c

index 473efe9..72bd779 100644 (file)
@@ -467,7 +467,7 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
        ret = snd_hda_codec_parse_pcms(hcodec);
        if (ret < 0) {
                dev_err(&hdev->dev, "unable to map pcms to dai %d\n", ret);
-               goto error_regmap;
+               goto error_patch;
        }
 
        /* HDMI controls need to be created in machine drivers */
@@ -476,7 +476,7 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
                if (ret < 0) {
                        dev_err(&hdev->dev, "unable to create controls %d\n",
                                ret);
-                       goto error_regmap;
+                       goto error_patch;
                }
        }
 
@@ -496,6 +496,9 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
 
        return 0;
 
+error_patch:
+       if (hcodec->patch_ops.free)
+               hcodec->patch_ops.free(hcodec);
 error_regmap:
        snd_hdac_regmap_exit(hdev);
 error_pm: