Skip to content

Commit

Permalink
Input: tsc2007 - fix locking in hrtimer handler
Browse files Browse the repository at this point in the history
Now that hrtimers are always running in hard irq context we can't
unconditionally enable interrupts at the end of the timer function.

Signed-off-by: Thierry Reding <[email protected]>
Signed-off-by: Kwangwoo Lee <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
  • Loading branch information
Thierry Reding authored and dtor committed May 11, 2009
1 parent 9166d0f commit 705a76d
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions drivers/input/touchscreen/tsc2007.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,9 @@ static int tsc2007_read_values(struct tsc2007 *tsc)
static enum hrtimer_restart tsc2007_timer(struct hrtimer *handle)
{
struct tsc2007 *ts = container_of(handle, struct tsc2007, timer);
unsigned long flags;

spin_lock_irq(&ts->lock);
spin_lock_irqsave(&ts->lock, flags);

if (unlikely(!ts->get_pendown_state() && ts->pendown)) {
struct input_dev *input = ts->input;
Expand All @@ -222,7 +223,7 @@ static enum hrtimer_restart tsc2007_timer(struct hrtimer *handle)
tsc2007_send_event(ts);
}

spin_unlock_irq(&ts->lock);
spin_unlock_irqrestore(&ts->lock, flags);

return HRTIMER_NORESTART;
}
Expand Down

0 comments on commit 705a76d

Please sign in to comment.