|
@@ -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;
|