summaryrefslogtreecommitdiffstats
path: root/drivers/input/input-polldev.c
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2010-02-25 08:48:05 +0100
committerJens Axboe <jens.axboe@oracle.com>2010-02-25 08:48:05 +0100
commit7f03292ee16e68be96aa88904afc6152f8d37736 (patch)
tree5c32738f0348449c2fa9688d52e6ecf4445d76f0 /drivers/input/input-polldev.c
parentpktcdvd: use BIO list management functions (diff)
parentsecurity: fix error return path in ima_inode_alloc (diff)
downloadlinux-7f03292ee16e68be96aa88904afc6152f8d37736.tar.xz
linux-7f03292ee16e68be96aa88904afc6152f8d37736.zip
Merge branch 'master' into for-2.6.34
Conflicts: include/linux/blkdev.h Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'drivers/input/input-polldev.c')
-rw-r--r--drivers/input/input-polldev.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/input/input-polldev.c b/drivers/input/input-polldev.c
index aa6713b4a988..291d9393d359 100644
--- a/drivers/input/input-polldev.c
+++ b/drivers/input/input-polldev.c
@@ -100,6 +100,12 @@ static void input_close_polled_device(struct input_dev *input)
struct input_polled_dev *dev = input_get_drvdata(input);
cancel_delayed_work_sync(&dev->work);
+ /*
+ * Clean up work struct to remove references to the workqueue.
+ * It may be destroyed by the next call. This causes problems
+ * at next device open-close in case of poll_interval == 0.
+ */
+ INIT_DELAYED_WORK(&dev->work, dev->work.work.func);
input_polldev_stop_workqueue();
if (dev->close)