]> www.infradead.org Git - users/hch/configfs.git/commitdiff
ASoC: codecs: audio-iio-aux: Simplify audio_iio_aux_add_dapms() with cleanup.h
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Wed, 3 Jul 2024 12:10:55 +0000 (14:10 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 8 Jul 2024 11:49:54 +0000 (12:49 +0100)
Allocate the memory with scoped/cleanup.h in audio_iio_aux_add_dapms()
to reduce error handling (less error paths) and make the code a bit
simpler.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://patch.msgid.link/20240703-asoc-cleanup-h-v1-1-71219dfd0aef@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/audio-iio-aux.c

index 1e8e1effc2afea10ef8b37bf29a45293ce045d9c..3969ee45f41ee23cd4f4dd0bcef8782c047b0058 100644 (file)
@@ -6,6 +6,7 @@
 //
 // Author: Herve Codina <herve.codina@bootlin.com>
 
+#include <linux/cleanup.h>
 #include <linux/iio/consumer.h>
 #include <linux/minmax.h>
 #include <linux/mod_devicetable.h>
@@ -131,33 +132,27 @@ static int audio_iio_aux_add_dapms(struct snd_soc_component *component,
                                   struct audio_iio_aux_chan *chan)
 {
        struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
-       char *output_name;
-       char *input_name;
-       char *pga_name;
        int ret;
 
-       input_name = kasprintf(GFP_KERNEL, "%s IN", chan->name);
+       /* Allocated names are not needed afterwards (duplicated in ASoC internals) */
+       char *input_name __free(kfree) = kasprintf(GFP_KERNEL, "%s IN", chan->name);
        if (!input_name)
                return -ENOMEM;
 
-       output_name = kasprintf(GFP_KERNEL, "%s OUT", chan->name);
-       if (!output_name) {
-               ret = -ENOMEM;
-               goto out_free_input_name;
-       }
+       char *output_name __free(kfree) = kasprintf(GFP_KERNEL, "%s OUT", chan->name);
+       if (!output_name)
+               return -ENOMEM;
 
-       pga_name = kasprintf(GFP_KERNEL, "%s PGA", chan->name);
-       if (!pga_name) {
-               ret = -ENOMEM;
-               goto out_free_output_name;
-       }
+       char *pga_name __free(kfree) = kasprintf(GFP_KERNEL, "%s PGA", chan->name);
+       if (!pga_name)
+               return -ENOMEM;
 
        widgets[0] = SND_SOC_DAPM_INPUT(input_name);
        widgets[1] = SND_SOC_DAPM_OUTPUT(output_name);
        widgets[2] = SND_SOC_DAPM_PGA(pga_name, SND_SOC_NOPM, 0, 0, NULL, 0);
        ret = snd_soc_dapm_new_controls(dapm, widgets, 3);
        if (ret)
-               goto out_free_pga_name;
+               return ret;
 
        routes[0].sink = pga_name;
        routes[0].control = NULL;
@@ -165,17 +160,8 @@ static int audio_iio_aux_add_dapms(struct snd_soc_component *component,
        routes[1].sink = output_name;
        routes[1].control = NULL;
        routes[1].source = pga_name;
-       ret = snd_soc_dapm_add_routes(dapm, routes, 2);
 
-       /* Allocated names are no more needed (duplicated in ASoC internals) */
-
-out_free_pga_name:
-       kfree(pga_name);
-out_free_output_name:
-       kfree(output_name);
-out_free_input_name:
-       kfree(input_name);
-       return ret;
+       return snd_soc_dapm_add_routes(dapm, routes, 2);
 }
 
 static int audio_iio_aux_component_probe(struct snd_soc_component *component)