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

index 1a20131e2a6079d941ab5d399c490df2902cc2e8..373a31ddccb2d6977c222078851c6e6e2c5bff99 100644 (file)
@@ -5,6 +5,7 @@
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
+#include <linux/cleanup.h>
 #include <linux/device.h>
 #include <linux/wait.h>
 #include <linux/bitops.h>
@@ -2714,25 +2715,23 @@ static int wcd9335_codec_enable_dec(struct snd_soc_dapm_widget *w,
        struct snd_soc_component *comp = snd_soc_dapm_to_component(w->dapm);
        unsigned int decimator;
        char *dec_adc_mux_name = NULL;
-       char *widget_name = NULL;
-       char *wname;
+       char *widget_name;
        int ret = 0, amic_n;
        u16 tx_vol_ctl_reg, pwr_level_reg = 0, dec_cfg_reg, hpf_gate_reg;
        u16 tx_gain_ctl_reg;
        char *dec;
        u8 hpf_coff_freq;
 
-       widget_name = kmemdup_nul(w->name, 15, GFP_KERNEL);
-       if (!widget_name)
+       char *wname __free(kfree) = kmemdup_nul(w->name, 15, GFP_KERNEL);
+       if (!wname)
                return -ENOMEM;
 
-       wname = widget_name;
+       widget_name = wname;
        dec_adc_mux_name = strsep(&widget_name, " ");
        if (!dec_adc_mux_name) {
                dev_err(comp->dev, "%s: Invalid decimator = %s\n",
                        __func__, w->name);
-               ret =  -EINVAL;
-               goto out;
+               return -EINVAL;
        }
        dec_adc_mux_name = widget_name;
 
@@ -2740,16 +2739,14 @@ static int wcd9335_codec_enable_dec(struct snd_soc_dapm_widget *w,
        if (!dec) {
                dev_err(comp->dev, "%s: decimator index not found\n",
                        __func__);
-               ret =  -EINVAL;
-               goto out;
+               return  -EINVAL;
        }
 
        ret = kstrtouint(dec, 10, &decimator);
        if (ret < 0) {
                dev_err(comp->dev, "%s: Invalid decimator = %s\n",
                        __func__, wname);
-               ret =  -EINVAL;
-               goto out;
+               return -EINVAL;
        }
 
        tx_vol_ctl_reg = WCD9335_CDC_TX0_TX_PATH_CTL + 16 * decimator;
@@ -2836,8 +2833,7 @@ static int wcd9335_codec_enable_dec(struct snd_soc_dapm_widget *w,
                snd_soc_component_update_bits(comp, tx_vol_ctl_reg, 0x10, 0x00);
                break;
        }
-out:
-       kfree(wname);
+
        return ret;
 }