diff options
Diffstat (limited to 'drivers/staging/speakup/thread.c')
| -rw-r--r-- | drivers/staging/speakup/thread.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/staging/speakup/thread.c b/drivers/staging/speakup/thread.c index 103c5c81ee8..4397c8e898c 100644 --- a/drivers/staging/speakup/thread.c +++ b/drivers/staging/speakup/thread.c @@ -22,9 +22,9 @@ int speakup_thread(void *data) while (1) { DEFINE_WAIT(wait); while (1) { - spk_lock(flags); - our_sound = unprocessed_sound; - unprocessed_sound.active = 0; + spin_lock_irqsave(&speakup_info.spinlock, flags); + our_sound = spk_unprocessed_sound; + spk_unprocessed_sound.active = 0; prepare_to_wait(&speakup_event, &wait, TASK_INTERRUPTIBLE); should_break = kthread_should_stop() || @@ -32,7 +32,7 @@ int speakup_thread(void *data) (synth && synth->catch_up && synth->alive && (speakup_info.flushing || !synth_buffer_empty())); - spk_unlock(flags); + spin_unlock_irqrestore(&speakup_info.spinlock, flags); if (should_break) break; mutex_unlock(&spk_mutex); |
