[alsa-devel] snd_mixart_send_msg / snd_mixart_send_msg_wait_notif
Rene Herman
rene.herman at gmail.com
Tue Sep 18 13:54:23 CEST 2007
Hi.
While looking through ALSA for schedule_timeout() calls, I ran into:
int snd_mixart_send_msg(...)
{
[ ... ]
set_current_state(TASK_UNINTERRUPTIBLE);
add_wait_queue(&mgr->msg_sleep, &wait);
spin_unlock_irq(&mgr->msg_lock);
timeout = schedule_timeout(MSG_TIMEOUT_JIFFIES);
remove_wait_queue(&mgr->msg_sleep, &wait);
if (! timeout) {
/* error - no ack */
mutex_unlock(&mgr->msg_mutex);
snd_printk(KERN_ERR "error: no reponse on msg %x\n",
msg_frame);
return -EIO;
}
[ ... ]
}
and the same in snd_mixart_send_msg_wait_notif().
I believe there to be something wrong with this code. A schedule_timeout()
in TASK_UNINTERRUPTIBLE is always going to return 0. Didn't you intend to
use a wait_event_timeout() or something like that? Puzzled, since you err
out on !timeout, and it seems every run through this would end up there.
Rene.
More information about the Alsa-devel
mailing list