Skip to content

Commit

Permalink
thinkpad-acpi: fix poll thread auto-start
Browse files Browse the repository at this point in the history
The driver was not starting the NVRAM polling thread if the input
device was bound immediately after registration.

This fixes:
http://bugzilla.kernel.org/show_bug.cgi?id=15118

Reported-by: Florian Zumbiehl <florz@florz.de>
Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: stable@kernel.org
  • Loading branch information
Henrique de Moraes Holschuh committed Feb 26, 2010
1 parent 7d1894d commit b589ea4
Showing 1 changed file with 6 additions and 9 deletions.
15 changes: 6 additions & 9 deletions drivers/platform/x86/thinkpad_acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -2607,16 +2607,11 @@ static int hotkey_inputdev_open(struct input_dev *dev)
{
switch (tpacpi_lifecycle) {
case TPACPI_LIFE_INIT:
/*
* hotkey_init will call hotkey_poll_setup_safe
* at the appropriate moment
*/
return 0;
case TPACPI_LIFE_EXITING:
return -EBUSY;
case TPACPI_LIFE_RUNNING:
hotkey_poll_setup_safe(false);
return 0;
case TPACPI_LIFE_EXITING:
return -EBUSY;
}

/* Should only happen if tpacpi_lifecycle is corrupt */
Expand All @@ -2627,7 +2622,7 @@ static int hotkey_inputdev_open(struct input_dev *dev)
static void hotkey_inputdev_close(struct input_dev *dev)
{
/* disable hotkey polling when possible */
if (tpacpi_lifecycle == TPACPI_LIFE_RUNNING &&
if (tpacpi_lifecycle != TPACPI_LIFE_EXITING &&
!(hotkey_source_mask & hotkey_driver_mask))
hotkey_poll_setup_safe(false);
}
Expand Down Expand Up @@ -9038,6 +9033,9 @@ static int __init thinkpad_acpi_module_init(void)
return ret;
}
}

tpacpi_lifecycle = TPACPI_LIFE_RUNNING;

ret = input_register_device(tpacpi_inputdev);
if (ret < 0) {
printk(TPACPI_ERR "unable to register input device\n");
Expand All @@ -9047,7 +9045,6 @@ static int __init thinkpad_acpi_module_init(void)
tp_features.input_device_registered = 1;
}

tpacpi_lifecycle = TPACPI_LIFE_RUNNING;
return 0;
}

Expand Down

0 comments on commit b589ea4

Please sign in to comment.