Commit fe3fd483 authored by Kylene Hall's avatar Kylene Hall Committed by Linus Torvalds

[PATCH] tpm: fix timer initialization

Fix the timer to be inited and modified properly.  This work depends on the
fixing of the msleep stuff which in patch 1 of this set.
Signed-of-by: default avatarKylene Hall <kjhall@us.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2df7111f
...@@ -434,16 +434,7 @@ int tpm_release(struct inode *inode, struct file *file) ...@@ -434,16 +434,7 @@ int tpm_release(struct inode *inode, struct file *file)
spin_lock(&driver_lock); spin_lock(&driver_lock);
chip->num_opens--; chip->num_opens--;
spin_unlock(&driver_lock); del_singleshot_timer_sync(&chip->user_read_timer);
down(&chip->timer_manipulation_mutex);
if (timer_pending(&chip->user_read_timer))
del_singleshot_timer_sync(&chip->user_read_timer);
else if (timer_pending(&chip->device_timer))
del_singleshot_timer_sync(&chip->device_timer);
up(&chip->timer_manipulation_mutex);
kfree(chip->data_buffer);
atomic_set(&chip->data_pending, 0); atomic_set(&chip->data_pending, 0);
pci_dev_put(chip->pci_dev); pci_dev_put(chip->pci_dev);
...@@ -481,13 +472,7 @@ ssize_t tpm_write(struct file * file, const char __user * buf, ...@@ -481,13 +472,7 @@ ssize_t tpm_write(struct file * file, const char __user * buf,
up(&chip->buffer_mutex); up(&chip->buffer_mutex);
/* Set a timeout by which the reader must come claim the result */ /* Set a timeout by which the reader must come claim the result */
down(&chip->timer_manipulation_mutex); mod_timer(&chip->user_read_timer, jiffies + (60 * HZ));
init_timer(&chip->user_read_timer);
chip->user_read_timer.function = user_reader_timeout;
chip->user_read_timer.data = (unsigned long) chip;
chip->user_read_timer.expires = jiffies + (60 * HZ);
add_timer(&chip->user_read_timer);
up(&chip->timer_manipulation_mutex);
return in_size; return in_size;
} }
...@@ -617,9 +602,12 @@ int tpm_register_hardware(struct pci_dev *pci_dev, ...@@ -617,9 +602,12 @@ int tpm_register_hardware(struct pci_dev *pci_dev,
init_MUTEX(&chip->buffer_mutex); init_MUTEX(&chip->buffer_mutex);
init_MUTEX(&chip->tpm_mutex); init_MUTEX(&chip->tpm_mutex);
init_MUTEX(&chip->timer_manipulation_mutex);
INIT_LIST_HEAD(&chip->list); INIT_LIST_HEAD(&chip->list);
init_timer(&chip->user_read_timer);
chip->user_read_timer.function = user_reader_timeout;
chip->user_read_timer.data = (unsigned long) chip;
chip->vendor = entry; chip->vendor = entry;
chip->dev_num = -1; chip->dev_num = -1;
......
...@@ -63,8 +63,6 @@ struct tpm_chip { ...@@ -63,8 +63,6 @@ struct tpm_chip {
struct timer_list user_read_timer; /* user needs to claim result */ struct timer_list user_read_timer; /* user needs to claim result */
struct semaphore tpm_mutex; /* tpm is processing */ struct semaphore tpm_mutex; /* tpm is processing */
struct timer_list device_timer; /* tpm is processing */
struct semaphore timer_manipulation_mutex;
struct tpm_vendor_specific *vendor; struct tpm_vendor_specific *vendor;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment