diff options
Diffstat (limited to 'drivers/char/tpm/tpm.c')
-rw-r--r-- | drivers/char/tpm/tpm.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c index 0b3af3fe6766..1f46f1cd9225 100644 --- a/drivers/char/tpm/tpm.c +++ b/drivers/char/tpm/tpm.c | |||
@@ -736,7 +736,7 @@ int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) | |||
736 | if (chip == NULL) | 736 | if (chip == NULL) |
737 | return -ENODEV; | 737 | return -ENODEV; |
738 | rc = __tpm_pcr_read(chip, pcr_idx, res_buf); | 738 | rc = __tpm_pcr_read(chip, pcr_idx, res_buf); |
739 | module_put(chip->dev->driver->owner); | 739 | tpm_chip_put(chip); |
740 | return rc; | 740 | return rc; |
741 | } | 741 | } |
742 | EXPORT_SYMBOL_GPL(tpm_pcr_read); | 742 | EXPORT_SYMBOL_GPL(tpm_pcr_read); |
@@ -775,11 +775,27 @@ int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash) | |||
775 | rc = transmit_cmd(chip, &cmd, EXTEND_PCR_RESULT_SIZE, | 775 | rc = transmit_cmd(chip, &cmd, EXTEND_PCR_RESULT_SIZE, |
776 | "attempting extend a PCR value"); | 776 | "attempting extend a PCR value"); |
777 | 777 | ||
778 | module_put(chip->dev->driver->owner); | 778 | tpm_chip_put(chip); |
779 | return rc; | 779 | return rc; |
780 | } | 780 | } |
781 | EXPORT_SYMBOL_GPL(tpm_pcr_extend); | 781 | EXPORT_SYMBOL_GPL(tpm_pcr_extend); |
782 | 782 | ||
783 | int tpm_send(u32 chip_num, void *cmd, size_t buflen) | ||
784 | { | ||
785 | struct tpm_chip *chip; | ||
786 | int rc; | ||
787 | |||
788 | chip = tpm_chip_find_get(chip_num); | ||
789 | if (chip == NULL) | ||
790 | return -ENODEV; | ||
791 | |||
792 | rc = transmit_cmd(chip, cmd, buflen, "attempting tpm_cmd"); | ||
793 | |||
794 | tpm_chip_put(chip); | ||
795 | return rc; | ||
796 | } | ||
797 | EXPORT_SYMBOL_GPL(tpm_send); | ||
798 | |||
783 | ssize_t tpm_show_pcrs(struct device *dev, struct device_attribute *attr, | 799 | ssize_t tpm_show_pcrs(struct device *dev, struct device_attribute *attr, |
784 | char *buf) | 800 | char *buf) |
785 | { | 801 | { |