[PATCH] ALSA: 6fire: Use common error handling code in usb6fire_control_init()
From: Markus Elfring
Date: Wed Jun 10 2026 - 13:03:44 EST
From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 10 Jun 2026 18:57:17 +0200
Use an additional label so that a bit of exception handling can be better
reused at the end of this function implementation.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
---
sound/usb/6fire/control.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/sound/usb/6fire/control.c b/sound/usb/6fire/control.c
index c77a21a9acd7..10104cb42165 100644
--- a/sound/usb/6fire/control.c
+++ b/sound/usb/6fire/control.c
@@ -582,30 +582,31 @@ int usb6fire_control_init(struct sfire_chip *chip)
"Master Playback Volume", vol_elements);
if (ret) {
dev_err(&chip->dev->dev, "cannot add control.\n");
- kfree(rt);
- return ret;
+ goto free_rt;
}
ret = usb6fire_control_add_virtual(rt, chip->card,
"Master Playback Switch", mute_elements);
if (ret) {
dev_err(&chip->dev->dev, "cannot add control.\n");
- kfree(rt);
- return ret;
+ goto free_rt;
}
i = 0;
while (elements[i].name) {
ret = snd_ctl_add(chip->card, snd_ctl_new1(&elements[i], rt));
if (ret < 0) {
- kfree(rt);
dev_err(&chip->dev->dev, "cannot add control.\n");
- return ret;
+ goto free_rt;
}
i++;
}
chip->control = rt;
return 0;
+
+free_rt:
+ kfree(rt);
+ return ret;
}
void usb6fire_control_abort(struct sfire_chip *chip)
--
2.54.0