ALSA: USB: 6fire: signedness bug in usb6fire_pcm_prepare()
authorDan Carpenter <error27@gmail.com>
Mon, 7 Feb 2011 17:25:19 +0000 (20:25 +0300)
committerTakashi Iwai <tiwai@suse.de>
Mon, 7 Feb 2011 17:30:10 +0000 (18:30 +0100)
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 <error27@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/6fire/pcm.c

index 705c88e1964c938aa661ca66170d4f6cd0e6eee0..ba62c7468ba8d928a800617ffb26c4a7bed22b33 100644 (file)
@@ -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.\n",
                                        alsa_rt->rate);