ASoC: topology: factor kfree(se) in error handling
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Tue, 7 Jul 2020 20:37:48 +0000 (15:37 -0500)
committerMark Brown <broonie@kernel.org>
Wed, 8 Jul 2020 13:25:21 +0000 (14:25 +0100)
No need to repeat the same thing multiple times when it can be done in
one location.

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

index d42f73f..4004fc8 100644 (file)
@@ -1055,7 +1055,6 @@ static int soc_tplg_denum_create(struct soc_tplg *tplg, unsigned int count,
                                dev_err(tplg->dev,
                                        "ASoC: could not create values for %s\n",
                                        ec->hdr.name);
-                               kfree(se);
                                goto err_denum;
                        }
                        /* fall through */
@@ -1067,7 +1066,6 @@ static int soc_tplg_denum_create(struct soc_tplg *tplg, unsigned int count,
                                dev_err(tplg->dev,
                                        "ASoC: could not create texts for %s\n",
                                        ec->hdr.name);
-                               kfree(se);
                                goto err_denum;
                        }
                        break;
@@ -1076,7 +1074,6 @@ static int soc_tplg_denum_create(struct soc_tplg *tplg, unsigned int count,
                        dev_err(tplg->dev,
                                "ASoC: invalid enum control type %d for %s\n",
                                ec->hdr.ops.info, ec->hdr.name);
-                       kfree(se);
                        goto err_denum;
                }
 
@@ -1084,7 +1081,6 @@ static int soc_tplg_denum_create(struct soc_tplg *tplg, unsigned int count,
                err = soc_tplg_kcontrol_bind_io(&ec->hdr, &kc, tplg);
                if (err) {
                        soc_control_err(tplg, &ec->hdr, ec->hdr.name);
-                       kfree(se);
                        goto err_denum;
                }
 
@@ -1094,7 +1090,6 @@ static int soc_tplg_denum_create(struct soc_tplg *tplg, unsigned int count,
                if (err < 0) {
                        dev_err(tplg->dev, "ASoC: failed to init %s\n",
                                ec->hdr.name);
-                       kfree(se);
                        goto err_denum;
                }
 
@@ -1104,13 +1099,15 @@ static int soc_tplg_denum_create(struct soc_tplg *tplg, unsigned int count,
                if (err < 0) {
                        dev_err(tplg->dev, "ASoC: could not add kcontrol %s\n",
                                ec->hdr.name);
-                       kfree(se);
                        goto err_denum;
                }
 
                list_add(&se->dobj.list, &tplg->comp->dobj_list);
        }
+       return 0;
+
 err_denum:
+       kfree(se);
        return err;
 }