[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