From: Kylene Hall Date: Fri, 24 Jun 2005 05:02:03 +0000 (-0700) Subject: [PATCH] tpm: locking fixes X-Git-Tag: firefly_0821_release~42711^2~395 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5e976d5557d3dd1e835b8be52e6201556dcfa052;p=firefly-linux-kernel-4.4.55.git [PATCH] tpm: locking fixes Add a missing lock in the register hardware and fix a misplaced lock release release. Signed-off-by: Kylene Hall Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c index e7c1dedfe448..c6d985b04b6d 100644 --- a/drivers/char/tpm/tpm.c +++ b/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 @@ dev_num_search_complete: 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;