فهرست منبع

Input: bf54x-keys - fix system hang when pressing a key

We need to use the nosync version of disable_irq so that we don't hang in
the IRQ handler as we don't ACK the interrupt until later.  This used to
work regardless, but at some point, the IRQ behavior changed.  Not sure
when exactly.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Mike Frysinger 15 سال پیش
والد
کامیت
9e49f6c133
1فایلهای تغییر یافته به همراه1 افزوده شده و 1 حذف شده
  1. 1 1
      drivers/input/keyboard/bf54x-keys.c

+ 1 - 1
drivers/input/keyboard/bf54x-keys.c

@@ -162,7 +162,7 @@ static irqreturn_t bfin_kpad_isr(int irq, void *dev_id)
 	input_sync(input);
 	input_sync(input);
 
 
 	if (bfin_kpad_get_keypressed(bf54x_kpad)) {
 	if (bfin_kpad_get_keypressed(bf54x_kpad)) {
-		disable_irq(bf54x_kpad->irq);
+		disable_irq_nosync(bf54x_kpad->irq);
 		bf54x_kpad->lastkey = key;
 		bf54x_kpad->lastkey = key;
 		mod_timer(&bf54x_kpad->timer,
 		mod_timer(&bf54x_kpad->timer,
 			  jiffies + bf54x_kpad->keyup_test_jiffies);
 			  jiffies + bf54x_kpad->keyup_test_jiffies);