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

index 32cc90d09bc2516097ac0fba622e5127d2e9b090..4b322bb634b64d985e2e5fe393e11c081ccbf3df 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/async.h>
+#include <linux/cleanup.h>
 #include <linux/delay.h>
 #include <linux/pm.h>
 #include <linux/bitops.h>
@@ -323,9 +324,9 @@ static inline struct snd_soc_dapm_widget *dapm_cnew_widget(
        const struct snd_soc_dapm_widget *_widget,
        const char *prefix)
 {
-       struct snd_soc_dapm_widget *w;
-
-       w = kmemdup(_widget, sizeof(*_widget), GFP_KERNEL);
+       struct snd_soc_dapm_widget *w __free(kfree) = kmemdup(_widget,
+                                                             sizeof(*_widget),
+                                                             GFP_KERNEL);
        if (!w)
                return NULL;
 
@@ -333,20 +334,18 @@ static inline struct snd_soc_dapm_widget *dapm_cnew_widget(
                w->name = kasprintf(GFP_KERNEL, "%s %s", prefix, _widget->name);
        else
                w->name = kstrdup_const(_widget->name, GFP_KERNEL);
-       if (!w->name) {
-               kfree(w);
+       if (!w->name)
                return NULL;
-       }
 
        if (_widget->sname) {
                w->sname = kstrdup_const(_widget->sname, GFP_KERNEL);
                if (!w->sname) {
                        kfree_const(w->name);
-                       kfree(w);
                        return NULL;
                }
        }
-       return w;
+
+       return_ptr(w);
 }
 
 struct dapm_kcontrol_data {