Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 705a76d2 authored by Thierry Reding's avatar Thierry Reding Committed by Dmitry Torokhov
Browse files

Input: tsc2007 - fix locking in hrtimer handler



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: default avatarThierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: default avatarKwangwoo Lee <kwangwoo.lee@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 9166d0f6
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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;
}