Commit f8f1fe1d5262d1d089bfa5bfdf703d5b2c5e0030
1 parent
c10c8e313c
Exists in
v2017.01-smarct4x
and in
30 other branches
tpm: Report tpm errors on the command line
When a 'tpm' command fails, we set the return code but give no indication of failure. This can be confusing. Add an error message when any tpm command fails. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Christophe Ricard<christophe-h.ricard@st.com> Reviewed-by: Heiko Schocher <hs@denx.de>
Showing 1 changed file with 24 additions and 22 deletions Side-by-side Diff
common/cmd_tpm.c
... | ... | @@ -80,17 +80,19 @@ |
80 | 80 | } |
81 | 81 | |
82 | 82 | /** |
83 | - * Convert TPM command return code to U-Boot command error codes. | |
83 | + * report_return_code() - Report any error and return failure or success | |
84 | 84 | * |
85 | 85 | * @param return_code TPM command return code |
86 | 86 | * @return value of enum command_ret_t |
87 | 87 | */ |
88 | -static int convert_return_code(uint32_t return_code) | |
88 | +static int report_return_code(int return_code) | |
89 | 89 | { |
90 | - if (return_code) | |
90 | + if (return_code) { | |
91 | + printf("Error: %d\n", return_code); | |
91 | 92 | return CMD_RET_FAILURE; |
92 | - else | |
93 | + } else { | |
93 | 94 | return CMD_RET_SUCCESS; |
95 | + } | |
94 | 96 | } |
95 | 97 | |
96 | 98 | /** |
... | ... | @@ -252,7 +254,7 @@ |
252 | 254 | return CMD_RET_FAILURE; |
253 | 255 | } |
254 | 256 | |
255 | - return convert_return_code(tpm_startup(mode)); | |
257 | + return report_return_code(tpm_startup(mode)); | |
256 | 258 | } |
257 | 259 | |
258 | 260 | static int do_tpm_nv_define_space(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -266,7 +268,7 @@ |
266 | 268 | perm = simple_strtoul(argv[2], NULL, 0); |
267 | 269 | size = simple_strtoul(argv[3], NULL, 0); |
268 | 270 | |
269 | - return convert_return_code(tpm_nv_define_space(index, perm, size)); | |
271 | + return report_return_code(tpm_nv_define_space(index, perm, size)); | |
270 | 272 | } |
271 | 273 | |
272 | 274 | static int do_tpm_nv_read_value(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -287,7 +289,7 @@ |
287 | 289 | print_byte_string(data, count); |
288 | 290 | } |
289 | 291 | |
290 | - return convert_return_code(rc); | |
292 | + return report_return_code(rc); | |
291 | 293 | } |
292 | 294 | |
293 | 295 | static int do_tpm_nv_write_value(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -309,7 +311,7 @@ |
309 | 311 | rc = tpm_nv_write_value(index, data, count); |
310 | 312 | free(data); |
311 | 313 | |
312 | - return convert_return_code(rc); | |
314 | + return report_return_code(rc); | |
313 | 315 | } |
314 | 316 | |
315 | 317 | static int do_tpm_extend(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -332,7 +334,7 @@ |
332 | 334 | print_byte_string(out_digest, sizeof(out_digest)); |
333 | 335 | } |
334 | 336 | |
335 | - return convert_return_code(rc); | |
337 | + return report_return_code(rc); | |
336 | 338 | } |
337 | 339 | |
338 | 340 | static int do_tpm_pcr_read(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -353,7 +355,7 @@ |
353 | 355 | print_byte_string(data, count); |
354 | 356 | } |
355 | 357 | |
356 | - return convert_return_code(rc); | |
358 | + return report_return_code(rc); | |
357 | 359 | } |
358 | 360 | |
359 | 361 | static int do_tpm_tsc_physical_presence(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -365,7 +367,7 @@ |
365 | 367 | return CMD_RET_USAGE; |
366 | 368 | presence = (uint16_t)simple_strtoul(argv[1], NULL, 0); |
367 | 369 | |
368 | - return convert_return_code(tpm_tsc_physical_presence(presence)); | |
370 | + return report_return_code(tpm_tsc_physical_presence(presence)); | |
369 | 371 | } |
370 | 372 | |
371 | 373 | static int do_tpm_read_pubek(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -385,7 +387,7 @@ |
385 | 387 | print_byte_string(data, count); |
386 | 388 | } |
387 | 389 | |
388 | - return convert_return_code(rc); | |
390 | + return report_return_code(rc); | |
389 | 391 | } |
390 | 392 | |
391 | 393 | static int do_tpm_physical_set_deactivated(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -397,7 +399,7 @@ |
397 | 399 | return CMD_RET_USAGE; |
398 | 400 | state = (uint8_t)simple_strtoul(argv[1], NULL, 0); |
399 | 401 | |
400 | - return convert_return_code(tpm_physical_set_deactivated(state)); | |
402 | + return report_return_code(tpm_physical_set_deactivated(state)); | |
401 | 403 | } |
402 | 404 | |
403 | 405 | static int do_tpm_get_capability(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -420,7 +422,7 @@ |
420 | 422 | print_byte_string(cap, count); |
421 | 423 | } |
422 | 424 | |
423 | - return convert_return_code(rc); | |
425 | + return report_return_code(rc); | |
424 | 426 | } |
425 | 427 | |
426 | 428 | #define TPM_COMMAND_NO_ARG(cmd) \ |
... | ... | @@ -429,7 +431,7 @@ |
429 | 431 | { \ |
430 | 432 | if (argc != 1) \ |
431 | 433 | return CMD_RET_USAGE; \ |
432 | - return convert_return_code(cmd()); \ | |
434 | + return report_return_code(cmd()); \ | |
433 | 435 | } |
434 | 436 | |
435 | 437 | TPM_COMMAND_NO_ARG(tpm_init) |
... | ... | @@ -485,7 +487,7 @@ |
485 | 487 | print_byte_string(response, response_length); |
486 | 488 | } |
487 | 489 | |
488 | - return convert_return_code(rc); | |
490 | + return report_return_code(rc); | |
489 | 491 | } |
490 | 492 | |
491 | 493 | static int do_tpm_nv_define(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -503,7 +505,7 @@ |
503 | 505 | index = simple_strtoul(argv[2], NULL, 0); |
504 | 506 | perm = simple_strtoul(argv[3], NULL, 0); |
505 | 507 | |
506 | - return convert_return_code(tpm_nv_define_space(index, perm, size)); | |
508 | + return report_return_code(tpm_nv_define_space(index, perm, size)); | |
507 | 509 | } |
508 | 510 | |
509 | 511 | static int do_tpm_nv_read(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -532,7 +534,7 @@ |
532 | 534 | } |
533 | 535 | free(data); |
534 | 536 | |
535 | - return convert_return_code(err); | |
537 | + return report_return_code(err); | |
536 | 538 | } |
537 | 539 | |
538 | 540 | static int do_tpm_nv_write(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -560,7 +562,7 @@ |
560 | 562 | err = tpm_nv_write_value(index, data, count); |
561 | 563 | free(data); |
562 | 564 | |
563 | - return convert_return_code(err); | |
565 | + return report_return_code(err); | |
564 | 566 | } |
565 | 567 | |
566 | 568 | #ifdef CONFIG_TPM_AUTH_SESSIONS |
... | ... | @@ -572,7 +574,7 @@ |
572 | 574 | |
573 | 575 | err = tpm_oiap(&auth_handle); |
574 | 576 | |
575 | - return convert_return_code(err); | |
577 | + return report_return_code(err); | |
576 | 578 | } |
577 | 579 | |
578 | 580 | static int do_tpm_load_key2_oiap(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -597,7 +599,7 @@ |
597 | 599 | if (!err) |
598 | 600 | printf("Key handle is 0x%x\n", key_handle); |
599 | 601 | |
600 | - return convert_return_code(err); | |
602 | + return report_return_code(err); | |
601 | 603 | } |
602 | 604 | |
603 | 605 | static int do_tpm_get_pub_key_oiap(cmd_tbl_t *cmdtp, int flag, |
... | ... | @@ -622,7 +624,7 @@ |
622 | 624 | printf("dump of received pub key structure:\n"); |
623 | 625 | print_byte_string(pub_key_buffer, pub_key_len); |
624 | 626 | } |
625 | - return convert_return_code(err); | |
627 | + return report_return_code(err); | |
626 | 628 | } |
627 | 629 | |
628 | 630 | TPM_COMMAND_NO_ARG(tpm_end_oiap) |