]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ASoC: codecs: audio-iio-aux: Simplify audio_iio_aux_probe() with cleanup.h
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Wed, 3 Jul 2024 12:10:56 +0000 (14:10 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 8 Jul 2024 11:49:55 +0000 (12:49 +0100)
Allocate the memory with scoped/cleanup.h in audio_iio_aux_probe() 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-2-71219dfd0aef@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/audio-iio-aux.c

index 3969ee45f41ee23cd4f4dd0bcef8782c047b0058..588e48044c13c8aeadf0039a767a22d1fcc9c0b2 100644 (file)
@@ -230,8 +230,6 @@ static int audio_iio_aux_probe(struct platform_device *pdev)
        struct audio_iio_aux_chan *iio_aux_chan;
        struct device *dev = &pdev->dev;
        struct audio_iio_aux *iio_aux;
-       const char **names;
-       u32 *invert_ranges;
        int count;
        int ret;
        int i;
@@ -248,22 +246,22 @@ static int audio_iio_aux_probe(struct platform_device *pdev)
 
        iio_aux->num_chans = count;
 
-       names = kcalloc(iio_aux->num_chans, sizeof(*names), GFP_KERNEL);
+       const char **names __free(kfree) = kcalloc(iio_aux->num_chans,
+                                                  sizeof(*names),
+                                                  GFP_KERNEL);
        if (!names)
                return -ENOMEM;
 
-       invert_ranges = kcalloc(iio_aux->num_chans, sizeof(*invert_ranges), GFP_KERNEL);
-       if (!invert_ranges) {
-               ret = -ENOMEM;
-               goto out_free_names;
-       }
+       u32 *invert_ranges __free(kfree) = kcalloc(iio_aux->num_chans,
+                                                  sizeof(*invert_ranges),
+                                                  GFP_KERNEL);
+       if (!invert_ranges)
+               return -ENOMEM;
 
        ret = device_property_read_string_array(dev, "io-channel-names",
                                                names, iio_aux->num_chans);
-       if (ret < 0) {
-               dev_err_probe(dev, ret, "failed to read io-channel-names\n");
-               goto out_free_invert_ranges;
-       }
+       if (ret < 0)
+               return dev_err_probe(dev, ret, "failed to read io-channel-names\n");
 
        /*
         * snd-control-invert-range is optional and can contain fewer items
@@ -274,10 +272,8 @@ static int audio_iio_aux_probe(struct platform_device *pdev)
                count = min_t(unsigned int, count, iio_aux->num_chans);
                ret = device_property_read_u32_array(dev, "snd-control-invert-range",
                                                     invert_ranges, count);
-               if (ret < 0) {
-                       dev_err_probe(dev, ret, "failed to read snd-control-invert-range\n");
-                       goto out_free_invert_ranges;
-               }
+               if (ret < 0)
+                       return dev_err_probe(dev, ret, "failed to read snd-control-invert-range\n");
        }
 
        for (i = 0; i < iio_aux->num_chans; i++) {
@@ -286,23 +282,16 @@ static int audio_iio_aux_probe(struct platform_device *pdev)
                iio_aux_chan->is_invert_range = invert_ranges[i];
 
                iio_aux_chan->iio_chan = devm_iio_channel_get(dev, iio_aux_chan->name);
-               if (IS_ERR(iio_aux_chan->iio_chan)) {
-                       ret = PTR_ERR(iio_aux_chan->iio_chan);
-                       dev_err_probe(dev, ret, "get IIO channel '%s' failed\n",
-                                     iio_aux_chan->name);
-                       goto out_free_invert_ranges;
-               }
+               if (IS_ERR(iio_aux_chan->iio_chan))
+                       return dev_err_probe(dev, PTR_ERR(iio_aux_chan->iio_chan),
+                                            "get IIO channel '%s' failed\n",
+                                            iio_aux_chan->name);
        }
 
        platform_set_drvdata(pdev, iio_aux);
 
-       ret = devm_snd_soc_register_component(dev, &audio_iio_aux_component_driver,
-                                             NULL, 0);
-out_free_invert_ranges:
-       kfree(invert_ranges);
-out_free_names:
-       kfree(names);
-       return ret;
+       return devm_snd_soc_register_component(dev, &audio_iio_aux_component_driver,
+                                              NULL, 0);
 }
 
 static const struct of_device_id audio_iio_aux_ids[] = {