[alsa-devel] Setting invalid samplerate

Torsten Schenk torsten.schenk at zoho.com
Thu May 19 13:28:09 CEST 2011


That did the job indeed. I still wonder why it worked in so many cases... However, I will soon create a patch and submit it.

Thanks,
Torsten

---- On Thu, 19 May 2011 12:55:28 +0200 Clemens Ladisch  wrote ---- 

>Torsten Schenk wrote: 
>> I'm working on the driver for the dmx 6fire usb. ... 
>> since Ubuntu 11.04, I get complaints about the card not working anymore, 
> 
>I'd guess that would be commit 82d90313980b: 
>| ALSA: USB: 6fire: signedness bug in usb6fire_pcm_prepare() 
>| 
>| rt->rate is an unsigned char so it's never equal to -1. It's not a huge 
>| problem because the invalid rate is caught inside the call to 
>| usb6fire_pcm_set_rate() which returns -EINVAL. But if we fix the test 
>| then it prints out the correct error message so that's good. 
>| 
>| Signed-off-by: Dan Carpenter  
>| 
>| --- a/sound/usb/6fire/pcm.c 
>| +++ b/sound/usb/6fire/pcm.c 
>| @@ -493,13 +493,12 @@ static int usb6fire_pcm_prepare(struct snd_pcm_substream *alsa_sub) 
>|     sub->period_off = 0; 
>| 
>|     if (rt->stream_state == STREAM_DISABLED) { 
>| -        rt->rate = -1; 
>|         for (i = 0; i < ARRAY_SIZE(rates); i++) 
>|             if (alsa_rt->rate == rates[i]) { 
>|                 rt->rate = i; 
>|                 break; 
>|             } 
>| -        if (rt->rate == -1) { 
>| +        if (i == ARRAY_SIZE(rates)) { 
>|             mutex_unlock(&rt->stream_mutex); 
>|             snd_printk("invalid rate %d in prepare.", 
>|                     alsa_rt->rate); 
> 
>This fixed not a bug but just a symptom of the actual bug, that rt->rate 
>is not signed. 
> 
>There are still "rt->rate = -1" initializations, and usb6fire_pcm_open() 
>then does: 
> 
>    if (rt->rate >= 0) 
>        alsa_rt->hw.rates = rates_alsaid[rt->rate]; 
> 
> 
>Regards, 
>Clemens 
>_______________________________________________ 
>Alsa-devel mailing list 
>Alsa-devel at alsa-project.org 
>http://mailman.alsa-project.org/mailman/listinfo/alsa-devel 
>



More information about the Alsa-devel mailing list