diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-10 14:18:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-10 14:18:59 -0500 |
commit | e0e736fc0d33861335e2a132e4f688f7fd380c61 (patch) | |
tree | d9febe9ca1ef1e24efc5e6e1e34e412316d246bd /drivers/char | |
parent | a08948812b30653eb2c536ae613b635a989feb6f (diff) | |
parent | aeda4ac3efc29e4d55989abd0a73530453aa69ba (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (30 commits)
MAINTAINERS: Add tomoyo-dev-en ML.
SELinux: define permissions for DCB netlink messages
encrypted-keys: style and other cleanup
encrypted-keys: verify datablob size before converting to binary
trusted-keys: kzalloc and other cleanup
trusted-keys: additional TSS return code and other error handling
syslog: check cap_syslog when dmesg_restrict
Smack: Transmute labels on specified directories
selinux: cache sidtab_context_to_sid results
SELinux: do not compute transition labels on mountpoint labeled filesystems
This patch adds a new security attribute to Smack called SMACK64EXEC. It defines label that is used while task is running.
SELinux: merge policydb_index_classes and policydb_index_others
selinux: convert part of the sym_val_to_name array to use flex_array
selinux: convert type_val_to_struct to flex_array
flex_array: fix flex_array_put_ptr macro to be valid C
SELinux: do not set automatic i_ino in selinuxfs
selinux: rework security_netlbl_secattr_to_sid
SELinux: standardize return code handling in selinuxfs.c
SELinux: standardize return code handling in selinuxfs.c
SELinux: standardize return code handling in policydb.c
...
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/tpm/tpm.c | 20 | ||||
-rw-r--r-- | drivers/char/tpm/tpm.h | 5 |
2 files changed, 23 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 | { |
diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h index 792868d24f2a..72ddb031b69a 100644 --- a/drivers/char/tpm/tpm.h +++ b/drivers/char/tpm/tpm.h | |||
@@ -113,6 +113,11 @@ struct tpm_chip { | |||
113 | 113 | ||
114 | #define to_tpm_chip(n) container_of(n, struct tpm_chip, vendor) | 114 | #define to_tpm_chip(n) container_of(n, struct tpm_chip, vendor) |
115 | 115 | ||
116 | static inline void tpm_chip_put(struct tpm_chip *chip) | ||
117 | { | ||
118 | module_put(chip->dev->driver->owner); | ||
119 | } | ||
120 | |||
116 | static inline int tpm_read_index(int base, int index) | 121 | static inline int tpm_read_index(int base, int index) |
117 | { | 122 | { |
118 | outb(index, base); | 123 | outb(index, base); |