Unverified Commit 5b3cc856 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Mark Brown
Browse files

ASoC: dapm: Simplify dapm_cnew_widget() with cleanup.h



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: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://patch.msgid.link/20240703-asoc-cleanup-h-v1-10-71219dfd0aef@linaro.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 1a7b8468
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -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 {