aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb
diff options
context:
space:
mode:
authorDaniel Mack <zonque@gmail.com>2013-03-19 21:09:24 +0100
committerBen Hutchings <ben@decadent.org.uk>2013-03-27 02:41:17 +0000
commit19a376b9ece69eeeb5f36f33abed485d4a3b7c61 (patch)
tree4ac5682c375aad2277f0172e437e6267091b740c /sound/usb
parent30a1cd8c73891e42952a50a1d7de44469f343513 (diff)
downloadkernel_samsung_smdk4412-19a376b9ece69eeeb5f36f33abed485d4a3b7c61.zip
kernel_samsung_smdk4412-19a376b9ece69eeeb5f36f33abed485d4a3b7c61.tar.gz
kernel_samsung_smdk4412-19a376b9ece69eeeb5f36f33abed485d4a3b7c61.tar.bz2
ALSA: snd-usb: mixer: propagate errors up the call chain
commit 4d7b86c98e445b075c2c4c3757eb6d3d6efbe72e upstream. In check_input_term() and parse_audio_feature_unit(), propagate the error value that has been returned by a failing function instead of -EINVAL. That helps cleaning up the error pathes in the mixer. Signed-off-by: Daniel Mack <zonque@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'sound/usb')
-rw-r--r--sound/usb/mixer.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index 9121dee..3e57557 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -711,8 +711,9 @@ static int check_input_term(struct mixer_build *state, int id, struct usb_audio_
case UAC2_CLOCK_SELECTOR: {
struct uac_selector_unit_descriptor *d = p1;
/* call recursively to retrieve the channel info */
- if (check_input_term(state, d->baSourceID[0], term) < 0)
- return -ENODEV;
+ err = check_input_term(state, d->baSourceID[0], term);
+ if (err < 0)
+ return err;
term->type = d->bDescriptorSubtype << 16; /* virtual type */
term->id = id;
term->name = uac_selector_unit_iSelector(d);
@@ -1263,8 +1264,9 @@ static int parse_audio_feature_unit(struct mixer_build *state, int unitid, void
return err;
/* determine the input source type and name */
- if (check_input_term(state, hdr->bSourceID, &iterm) < 0)
- return -EINVAL;
+ err = check_input_term(state, hdr->bSourceID, &iterm);
+ if (err < 0)
+ return err;
master_bits = snd_usb_combine_bytes(bmaControls, csize);
/* master configuration quirks */