Skip to content

Commit

Permalink
[PATCH] tpm: locking fixes
Browse files Browse the repository at this point in the history
Add a missing lock in the register hardware and fix a misplaced lock release
release.

Signed-off-by: Kylene Hall <kjhall@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Kylene Hall authored and Linus Torvalds committed Jun 24, 2005
1 parent d9e5b6b commit 5e976d5
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions drivers/char/tpm/tpm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 5e976d5

Please sign in to comment.