Commit d7e040ee authored by Jaroslav Kysela's avatar Jaroslav Kysela

ALSA CVS update - Takashi Iwai <tiwai@suse.de>

Timer Midlevel
fixed the unbalanced spinlock at the error path.
parent 68fd9f41
...@@ -1706,20 +1706,20 @@ static ssize_t snd_timer_user_read(struct file *file, char *buffer, size_t count ...@@ -1706,20 +1706,20 @@ static ssize_t snd_timer_user_read(struct file *file, char *buffer, size_t count
break; break;
} }
} }
if (err < 0)
break;
spin_unlock_irq(&tu->qlock); spin_unlock_irq(&tu->qlock);
if (err < 0)
goto _error;
if (tu->tread) { if (tu->tread) {
if (copy_to_user(buffer, &tu->tqueue[tu->qhead++], sizeof(snd_timer_tread_t))) { if (copy_to_user(buffer, &tu->tqueue[tu->qhead++], sizeof(snd_timer_tread_t))) {
err = -EFAULT; err = -EFAULT;
break; goto _error;
} }
} else { } else {
if (copy_to_user(buffer, &tu->queue[tu->qhead++], sizeof(snd_timer_read_t))) { if (copy_to_user(buffer, &tu->queue[tu->qhead++], sizeof(snd_timer_read_t))) {
err = -EFAULT; err = -EFAULT;
break; goto _error;
} }
} }
...@@ -1732,6 +1732,7 @@ static ssize_t snd_timer_user_read(struct file *file, char *buffer, size_t count ...@@ -1732,6 +1732,7 @@ static ssize_t snd_timer_user_read(struct file *file, char *buffer, size_t count
tu->qused--; tu->qused--;
} }
spin_unlock_irq(&tu->qlock); spin_unlock_irq(&tu->qlock);
_error:
return result > 0 ? result : err; return result > 0 ? result : err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment