]> err.no Git - linux-2.6/blobdiff - drivers/char/tpm/tpm.c
Merge with http://kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
[linux-2.6] / drivers / char / tpm / tpm.c
index 1a53da99b58fc8af06640dc9fe2a9333dae9c689..0b283d246730b051afcc2c4d1ce76f5e1f0deb78 100644 (file)
@@ -43,6 +43,13 @@ static void user_reader_timeout(unsigned long ptr)
 {
        struct tpm_chip *chip = (struct tpm_chip *) ptr;
 
+       schedule_work(&chip->work);
+}
+
+static void timeout_work(void * ptr)
+{
+       struct tpm_chip *chip = ptr;
+
        down(&chip->buffer_mutex);
        atomic_set(&chip->data_pending, 0);
        memset(chip->data_buffer, 0, TPM_BUFSIZE);
@@ -527,6 +534,8 @@ int tpm_register_hardware(struct device *dev, struct tpm_vendor_specific *entry)
        init_MUTEX(&chip->tpm_mutex);
        INIT_LIST_HEAD(&chip->list);
 
+       INIT_WORK(&chip->work, timeout_work, chip);
+
        init_timer(&chip->user_read_timer);
        chip->user_read_timer.function = user_reader_timeout;
        chip->user_read_timer.data = (unsigned long) chip;