diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index 7498b5191b68e4cf0368599998160ec0eb17f29d..ea487378be1798b5cd7e9eaaf7c2a9562999f8cb 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -744,6 +744,8 @@ static int uac_mixer_unit_get_channels(struct mixer_build *state,
 		return -EINVAL;
 	if (!desc->bNrInPins)
 		return -EINVAL;
+	if (desc->bLength < sizeof(*desc) + desc->bNrInPins)
+		return -EINVAL;
 
 	switch (state->mixer->protocol) {
 	case UAC_VERSION_1: