[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: Kylene Hall <kjhall@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
2df7111fc6
commit
fe3fd48384
|
@ -434,16 +434,7 @@ int tpm_release(struct inode *inode, struct file *file)
|
|||
|
||||
spin_lock(&driver_lock);
|
||||
chip->num_opens--;
|
||||
spin_unlock(&driver_lock);
|
||||
|
||||
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);
|
||||
del_singleshot_timer_sync(&chip->user_read_timer);
|
||||
atomic_set(&chip->data_pending, 0);
|
||||
|
||||
pci_dev_put(chip->pci_dev);
|
||||
|
@ -481,13 +472,7 @@ ssize_t tpm_write(struct file * file, const char __user * buf,
|
|||
up(&chip->buffer_mutex);
|
||||
|
||||
/* Set a timeout by which the reader must come claim the result */
|
||||
down(&chip->timer_manipulation_mutex);
|
||||
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);
|
||||
mod_timer(&chip->user_read_timer, jiffies + (60 * HZ));
|
||||
|
||||
return in_size;
|
||||
}
|
||||
|
@ -617,9 +602,12 @@ int tpm_register_hardware(struct pci_dev *pci_dev,
|
|||
|
||||
init_MUTEX(&chip->buffer_mutex);
|
||||
init_MUTEX(&chip->tpm_mutex);
|
||||
init_MUTEX(&chip->timer_manipulation_mutex);
|
||||
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->dev_num = -1;
|
||||
|
|
|
@ -63,8 +63,6 @@ struct tpm_chip {
|
|||
|
||||
struct timer_list user_read_timer; /* user needs to claim result */
|
||||
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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue