diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 409fc1164694..17081ada6802 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -2000,6 +2000,8 @@ static int parse_audio_feature_unit(struct mixer_build *state, int unitid, if (state->mixer->protocol == UAC_VERSION_1) { csize = hdr->bControlSize; channels = (hdr->bLength - 7) / csize - 1; + if (channels > 32) + return -EINVAL; bmaControls = hdr->bmaControls; } else if (state->mixer->protocol == UAC_VERSION_2) { struct uac2_feature_unit_descriptor *ftr = _ftr;