diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index f063623f899ee458b53d7b5d03888844606d391b..9627c22fdc3f45534498a7c081b58a4e1dd77e6b 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -1283,8 +1283,10 @@ static void build_feature_ctl(struct mixer_build *state, void *raw_desc,
 	cval->control = control;
 	cval->cmask = ctl_mask;
 	ctl_info = get_feature_control_info(control);
-	if (!ctl_info)
+	if (!ctl_info) {
+		kfree(cval);
 		return;
+	}
 	cval->val_type = ctl_info->type;
 	if (ctl_mask == 0) {
 		cval->channels = 1;	/* master channel */