--- linux/sound/core/timer.c 18 Jun 2003 10:48:29 -0000 1.28 +++ linux/sound/core/timer.c 17 Jul 2003 10:15:11 -0000 @@ -1690,10 +1690,11 @@ break; } } - spin_unlock_irq(&tu->qlock); if (err < 0) break; + spin_unlock_irq(&tu->qlock); + if (tu->tread) { if (copy_to_user(buffer, &tu->tqueue[tu->qhead++], sizeof(snd_timer_tread_t))) { err = -EFAULT; @@ -1714,6 +1715,7 @@ spin_lock_irq(&tu->qlock); tu->qused--; } + spin_unlock_irq(&tu->qlock); return result > 0 ? result : err; }