diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index 51352046b7e213cabf2e9c8ca3e3707cff2e90d1..026fc13ead0b1f82f70b2dab4d993dc3646b4de4 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c @@ -188,6 +188,7 @@ struct atkbd { unsigned int resend:1; unsigned int release:1; unsigned int bat_xl:1; + unsigned int enabled:1; unsigned int last; unsigned long time; @@ -248,6 +249,9 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data, goto out; } + if (!atkbd->enabled) + goto out; + if (atkbd->translated) { if (atkbd->emul || @@ -750,6 +754,8 @@ static void atkbd_connect(struct serio *serio, struct serio_dev *dev) atkbd->id = 0xab00; } + atkbd->enabled = 1; + if (atkbd->extra) { atkbd->dev.ledbit[0] |= BIT(LED_COMPOSE) | BIT(LED_SUSPEND) | BIT(LED_SLEEP) | BIT(LED_MUTE) | BIT(LED_MISC); sprintf(atkbd->name, "AT Set 2 Extra keyboard");