From 55d2972d35d7026f09e120d9fc27ebd91644d3be Mon Sep 17 00:00:00 2001 From: Parag Warudkar Date: Tue, 8 May 2007 00:31:09 -0700 Subject: [PATCH] --- yaml --- r: 54714 b: refs/heads/master c: 8e39c933b1b7df501dbb68879fb1640e277b8a5c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/char/tpm/tpm.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 4d962829713d..84ea10c308dc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 53ab97a1c1536015d4d6d900363ea96fece5ed97 +refs/heads/master: 8e39c933b1b7df501dbb68879fb1640e277b8a5c diff --git a/trunk/drivers/char/tpm/tpm.c b/trunk/drivers/char/tpm/tpm.c index e5a254a434f8..ef991cd8c024 100644 --- a/trunk/drivers/char/tpm/tpm.c +++ b/trunk/drivers/char/tpm/tpm.c @@ -942,12 +942,12 @@ int tpm_release(struct inode *inode, struct file *file) { struct tpm_chip *chip = file->private_data; + flush_scheduled_work(); spin_lock(&driver_lock); file->private_data = NULL; - chip->num_opens--; del_singleshot_timer_sync(&chip->user_read_timer); - flush_scheduled_work(); atomic_set(&chip->data_pending, 0); + chip->num_opens--; put_device(chip->dev); kfree(chip->data_buffer); spin_unlock(&driver_lock); @@ -1097,8 +1097,13 @@ struct tpm_chip *tpm_register_hardware(struct device *dev, const struct tpm_vend /* Driver specific per-device data */ chip = kzalloc(sizeof(*chip), GFP_KERNEL); - if (chip == NULL) + devname = kmalloc(DEVNAME_SIZE, GFP_KERNEL); + + if (chip == NULL || devname == NULL) { + kfree(chip); + kfree(devname); return NULL; + } init_MUTEX(&chip->buffer_mutex); init_MUTEX(&chip->tpm_mutex); @@ -1124,7 +1129,6 @@ struct tpm_chip *tpm_register_hardware(struct device *dev, const struct tpm_vend set_bit(chip->dev_num, dev_mask); - devname = kmalloc(DEVNAME_SIZE, GFP_KERNEL); scnprintf(devname, DEVNAME_SIZE, "%s%d", "tpm", chip->dev_num); chip->vendor.miscdev.name = devname;