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: 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>
This commit is contained in:
parent
1a7b846818
commit
5b3cc85673
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user