diff options
author | Mike Frysinger <vapier@gentoo.org> | 2010-03-09 20:38:45 -0800 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2010-03-09 22:09:07 -0800 |
commit | 9e49f6c1339a7972e23a335c4c71a289b4c6f65b (patch) | |
tree | 4ebea300fef2a2457bbb0a4bb26e60c4b62de3f7 | |
parent | eb8bff85c5bd5caef7c374ff32b86545029efb56 (diff) | |
download | kernel_samsung_crespo-9e49f6c1339a7972e23a335c4c71a289b4c6f65b.zip kernel_samsung_crespo-9e49f6c1339a7972e23a335c4c71a289b4c6f65b.tar.gz kernel_samsung_crespo-9e49f6c1339a7972e23a335c4c71a289b4c6f65b.tar.bz2 |
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>
-rw-r--r-- | drivers/input/keyboard/bf54x-keys.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/input/keyboard/bf54x-keys.c b/drivers/input/keyboard/bf54x-keys.c index fe376a2..593c052 100644 --- a/drivers/input/keyboard/bf54x-keys.c +++ b/drivers/input/keyboard/bf54x-keys.c @@ -162,7 +162,7 @@ static irqreturn_t bfin_kpad_isr(int irq, void *dev_id) input_sync(input); if (bfin_kpad_get_keypressed(bf54x_kpad)) { - disable_irq(bf54x_kpad->irq); + disable_irq_nosync(bf54x_kpad->irq); bf54x_kpad->lastkey = key; mod_timer(&bf54x_kpad->timer, jiffies + bf54x_kpad->keyup_test_jiffies); |