Input: bf54x-keys - fix system hang when pressing a key
authorMike Frysinger <vapier@gentoo.org>
Wed, 10 Mar 2010 04:38:45 +0000 (20:38 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 10 Mar 2010 06:09:07 +0000 (22:09 -0800)
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>
drivers/input/keyboard/bf54x-keys.c

index fe376a27fe5779dfdd403fb42733978983451e48..593c052416b90c94581c65808302445b05996eff 100644 (file)
@@ -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);