diff options
-rw-r--r-- | sound/usb/pcm.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index cdf8b7601973..fc7ce7c1b4fa 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c | |||
@@ -354,17 +354,21 @@ static int set_format(struct snd_usb_substream *subs, struct audioformat *fmt) | |||
354 | (get_endpoint(alts, 1)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE && | 354 | (get_endpoint(alts, 1)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE && |
355 | get_endpoint(alts, 1)->bSynchAddress != 0 && | 355 | get_endpoint(alts, 1)->bSynchAddress != 0 && |
356 | !implicit_fb)) { | 356 | !implicit_fb)) { |
357 | snd_printk(KERN_ERR "%d:%d:%d : invalid synch pipe\n", | 357 | snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. bmAttributes %02x, bLength %d, bSynchAddress %02x\n", |
358 | dev->devnum, fmt->iface, fmt->altsetting); | 358 | dev->devnum, fmt->iface, fmt->altsetting, |
359 | get_endpoint(alts, 1)->bmAttributes, | ||
360 | get_endpoint(alts, 1)->bLength, | ||
361 | get_endpoint(alts, 1)->bSynchAddress); | ||
359 | return -EINVAL; | 362 | return -EINVAL; |
360 | } | 363 | } |
361 | ep = get_endpoint(alts, 1)->bEndpointAddress; | 364 | ep = get_endpoint(alts, 1)->bEndpointAddress; |
362 | if (get_endpoint(alts, 0)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE && | 365 | if (!implicit_fb && |
366 | get_endpoint(alts, 0)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE && | ||
363 | (( is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress | USB_DIR_IN)) || | 367 | (( is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress | USB_DIR_IN)) || |
364 | (!is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress & ~USB_DIR_IN)) || | 368 | (!is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress & ~USB_DIR_IN)))) { |
365 | ( is_playback && !implicit_fb))) { | 369 | snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. is_playback %d, ep %02x, bSynchAddress %02x\n", |
366 | snd_printk(KERN_ERR "%d:%d:%d : invalid synch pipe\n", | 370 | dev->devnum, fmt->iface, fmt->altsetting, |
367 | dev->devnum, fmt->iface, fmt->altsetting); | 371 | is_playback, ep, get_endpoint(alts, 0)->bSynchAddress); |
368 | return -EINVAL; | 372 | return -EINVAL; |
369 | } | 373 | } |
370 | 374 | ||