aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/tpm/tpm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/tpm/tpm.c')
-rw-r--r--drivers/char/tpm/tpm.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
index 39e82314d67f..84b2d46e6ff0 100644
--- a/drivers/char/tpm/tpm.c
+++ b/drivers/char/tpm/tpm.c
@@ -143,11 +143,9 @@ static ssize_t tpm_transmit(struct tpm_chip *chip, const char *buf,
143{ 143{
144 ssize_t len; 144 ssize_t len;
145 u32 count; 145 u32 count;
146 __be32 *native_size;
147 unsigned long stop; 146 unsigned long stop;
148 147
149 native_size = (__force __be32 *) (buf + 2); 148 count = be32_to_cpu(*((__be32 *) (buf + 2)));
150 count = be32_to_cpu(*native_size);
151 149
152 if (count == 0) 150 if (count == 0)
153 return -ENODATA; 151 return -ENODATA;
@@ -214,7 +212,8 @@ static ssize_t show_pcrs(struct device *dev, struct device_attribute *attr, char
214{ 212{
215 u8 data[READ_PCR_RESULT_SIZE]; 213 u8 data[READ_PCR_RESULT_SIZE];
216 ssize_t len; 214 ssize_t len;
217 int i, j, index, num_pcrs; 215 int i, j, num_pcrs;
216 __be32 index;
218 char *str = buf; 217 char *str = buf;
219 218
220 struct tpm_chip *chip = 219 struct tpm_chip *chip =
@@ -227,7 +226,7 @@ static ssize_t show_pcrs(struct device *dev, struct device_attribute *attr, char
227 < CAP_PCR_RESULT_SIZE) 226 < CAP_PCR_RESULT_SIZE)
228 return len; 227 return len;
229 228
230 num_pcrs = be32_to_cpu(*((__force __be32 *) (data + 14))); 229 num_pcrs = be32_to_cpu(*((__be32 *) (data + 14)));
231 230
232 for (i = 0; i < num_pcrs; i++) { 231 for (i = 0; i < num_pcrs; i++) {
233 memcpy(data, pcrread, sizeof(pcrread)); 232 memcpy(data, pcrread, sizeof(pcrread));
@@ -257,8 +256,7 @@ static ssize_t show_pubek(struct device *dev, struct device_attribute *attr, cha
257{ 256{
258 u8 *data; 257 u8 *data;
259 ssize_t len; 258 ssize_t len;
260 __be32 *native_val; 259 int i, rc;
261 int i;
262 char *str = buf; 260 char *str = buf;
263 261
264 struct tpm_chip *chip = 262 struct tpm_chip *chip =
@@ -290,8 +288,6 @@ static ssize_t show_pubek(struct device *dev, struct device_attribute *attr, cha
290 ignore checksum 20 bytes 288 ignore checksum 20 bytes
291 */ 289 */
292 290
293 native_val = (__force __be32 *) (data + 34);
294
295 str += 291 str +=
296 sprintf(str, 292 sprintf(str,
297 "Algorithm: %02X %02X %02X %02X\nEncscheme: %02X %02X\n" 293 "Algorithm: %02X %02X %02X %02X\nEncscheme: %02X %02X\n"
@@ -302,8 +298,7 @@ static ssize_t show_pubek(struct device *dev, struct device_attribute *attr, cha
302 data[15], data[16], data[17], data[22], data[23], 298 data[15], data[16], data[17], data[22], data[23],
303 data[24], data[25], data[26], data[27], data[28], 299 data[24], data[25], data[26], data[27], data[28],
304 data[29], data[30], data[31], data[32], data[33], 300 data[29], data[30], data[31], data[32], data[33],
305 be32_to_cpu(*native_val) 301 be32_to_cpu(*((__be32 *) (data + 32))));
306 );
307 302
308 for (i = 0; i < 256; i++) { 303 for (i = 0; i < 256; i++) {
309 str += sprintf(str, "%02X ", data[i + 39]); 304 str += sprintf(str, "%02X ", data[i + 39]);
@@ -355,7 +350,7 @@ static ssize_t show_caps(struct device *dev, struct device_attribute *attr, char
355 return len; 350 return len;
356 351
357 str += sprintf(str, "Manufacturer: 0x%x\n", 352 str += sprintf(str, "Manufacturer: 0x%x\n",
358 be32_to_cpu(*(data + 14))); 353 be32_to_cpu(*((__be32 *) (data + 14))));
359 354
360 memcpy(data, cap_version, sizeof(cap_version)); 355 memcpy(data, cap_version, sizeof(cap_version));
361 356