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

[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
Loading
Loading
Loading
Loading
+6 −18
Original line number Diff line number Diff line
@@ -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);
	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;
+0 −2
Original line number Diff line number Diff line
@@ -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;