diff options
Diffstat (limited to 'sound/usb/caiaq/caiaq-audio.c')
-rw-r--r-- | sound/usb/caiaq/caiaq-audio.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/usb/caiaq/caiaq-audio.c b/sound/usb/caiaq/caiaq-audio.c index 577b1129de0e..08d51e0c9fea 100644 --- a/sound/usb/caiaq/caiaq-audio.c +++ b/sound/usb/caiaq/caiaq-audio.c | |||
@@ -377,6 +377,9 @@ static void read_in_urb_mode2(struct snd_usb_caiaqdev *dev, | |||
377 | 377 | ||
378 | for (stream = 0; stream < dev->n_streams; stream++, i++) { | 378 | for (stream = 0; stream < dev->n_streams; stream++, i++) { |
379 | sub = dev->sub_capture[stream]; | 379 | sub = dev->sub_capture[stream]; |
380 | if (dev->input_panic) | ||
381 | usb_buf[i] = 0; | ||
382 | |||
380 | if (sub) { | 383 | if (sub) { |
381 | struct snd_pcm_runtime *rt = sub->runtime; | 384 | struct snd_pcm_runtime *rt = sub->runtime; |
382 | char *audio_buf = rt->dma_area; | 385 | char *audio_buf = rt->dma_area; |
@@ -398,6 +401,9 @@ static void read_in_urb(struct snd_usb_caiaqdev *dev, | |||
398 | if (!dev->streaming) | 401 | if (!dev->streaming) |
399 | return; | 402 | return; |
400 | 403 | ||
404 | if (iso->actual_length < dev->bpp) | ||
405 | return; | ||
406 | |||
401 | switch (dev->spec.data_alignment) { | 407 | switch (dev->spec.data_alignment) { |
402 | case 0: | 408 | case 0: |
403 | read_in_urb_mode0(dev, urb, iso); | 409 | read_in_urb_mode0(dev, urb, iso); |