From a8f7456c017f94d726bddb48ab140214d9326b0a Mon Sep 17 00:00:00 2001 From: Kylene Hall Date: Thu, 23 Jun 2005 22:02:03 -0700 Subject: [PATCH] --- yaml --- r: 3067 b: refs/heads/master c: 5e976d5557d3dd1e835b8be52e6201556dcfa052 h: refs/heads/master i: 3065: 3e23b240b59efa67f7788e563666d341110c4fb5 3063: 32a5330d742e29306bc140131daa9fdf40ff555f v: v3 --- [refs] | 2 +- trunk/drivers/char/tpm/tpm.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index c6a5e4102315..ffe7f5ec78d1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d9e5b6bf9cf19e6e9f2825228136ea17bc9a051a +refs/heads/master: 5e976d5557d3dd1e835b8be52e6201556dcfa052 diff --git a/trunk/drivers/char/tpm/tpm.c b/trunk/drivers/char/tpm/tpm.c index e7c1dedfe448..c6d985b04b6d 100644 --- a/trunk/drivers/char/tpm/tpm.c +++ b/trunk/drivers/char/tpm/tpm.c @@ -447,15 +447,15 @@ EXPORT_SYMBOL_GPL(tpm_open); int tpm_release(struct inode *inode, struct file *file) { struct tpm_chip *chip = file->private_data; - - file->private_data = NULL; spin_lock(&driver_lock); + file->private_data = NULL; chip->num_opens--; del_singleshot_timer_sync(&chip->user_read_timer); atomic_set(&chip->data_pending, 0); - pci_dev_put(chip->pci_dev); + kfree(chip->data_buffer); + spin_unlock(&driver_lock); return 0; } @@ -665,10 +665,14 @@ int tpm_register_hardware(struct pci_dev *pci_dev, return -ENODEV; } + spin_lock(&driver_lock); + pci_set_drvdata(pci_dev, chip); list_add(&chip->list, &tpm_chip_list); + spin_unlock(&driver_lock); + sysfs_create_group(&pci_dev->dev.kobj, chip->vendor->attr_group); return 0;