diff options
author | Mimi Zohar <zohar@linux.vnet.ibm.com> | 2010-11-23 18:54:16 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2010-11-28 16:55:22 -0500 |
commit | c749ba912e87ccebd674ae24b97462176c63732e (patch) | |
tree | 72dff433660102d7eba7186f35bbd2aab21b1b6a | |
parent | a0e39349d80d8b5deeb264fb190bd064f7063252 (diff) |
key: add tpm_send command
Add internal kernel tpm_send() command used to seal/unseal keys.
Changelog:
- replaced module_put in tpm_send() with new tpm_chip_put() wrapper
(suggested by David Howells)
- Make tpm_send() cmd argument a 'void *' (suggested by David Howells)
Signed-off-by: David Safford <safford@watson.ibm.com>
Signed-off-by: Mimi Zohar <zohar@us.ibm.com>
Acked-by: David Howells <dhowells@redhat.com>
Acked-by: Serge E. Hallyn <serge.hallyn@canonical.com>
Signed-off-by: James Morris <jmorris@namei.org>
-rw-r--r-- | drivers/char/tpm/tpm.c | 16 | ||||
-rw-r--r-- | include/linux/tpm.h | 4 |
2 files changed, 20 insertions, 0 deletions
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c index 26c09f3b4a74..068bac858b4a 100644 --- a/drivers/char/tpm/tpm.c +++ b/drivers/char/tpm/tpm.c | |||
@@ -780,6 +780,22 @@ int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash) | |||
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 | { |
diff --git a/include/linux/tpm.h b/include/linux/tpm.h index ac5d1c1285d9..fdc718abf83b 100644 --- a/include/linux/tpm.h +++ b/include/linux/tpm.h | |||
@@ -31,6 +31,7 @@ | |||
31 | 31 | ||
32 | extern int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf); | 32 | extern int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf); |
33 | extern int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash); | 33 | extern int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash); |
34 | extern int tpm_send(u32 chip_num, void *cmd, size_t buflen); | ||
34 | #else | 35 | #else |
35 | static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) { | 36 | static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) { |
36 | return -ENODEV; | 37 | return -ENODEV; |
@@ -38,5 +39,8 @@ static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) { | |||
38 | static inline int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash) { | 39 | static inline int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash) { |
39 | return -ENODEV; | 40 | return -ENODEV; |
40 | } | 41 | } |
42 | static inline int tpm_send(u32 chip_num, void *cmd, size_t buflen) { | ||
43 | return -ENODEV; | ||
44 | } | ||
41 | #endif | 45 | #endif |
42 | #endif | 46 | #endif |