Hi Jordan, Thank you for the patch! Yet something to improve: [auto build test ERROR on jss-tpmdd/next] [cannot apply to v5.3-rc6 next-20190830] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Jordan-Hand/tpm-Parse-event-log-from-TPM2-ACPI-table/20190831-234702 base: git://git.infradead.org/users/jjs/linux-tpmdd next config: x86_64-rhel (attached as .config) compiler: gcc-7 (Debian 7.4.0-11) 7.4.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): drivers/char/tpm/eventlog/acpi.c: In function 'tpm_read_log_acpi': >> drivers/char/tpm/eventlog/acpi.c:96:21: error: 'tpm2_trailer' is a pointer; did you mean to use '->'? len = tpm2_trailer.minimum_log_length; ^ -> drivers/char/tpm/eventlog/acpi.c:97:23: error: 'tpm2_trailer' is a pointer; did you mean to use '->'? start = tpm2_trailer.log_address; ^ -> vim +96 drivers/char/tpm/eventlog/acpi.c 43 44 /* If an event log is present, the TPM2 ACPI table will contain the full 45 * trailer 46 */ 47 48 /* read binary bios log */ 49 int tpm_read_log_acpi(struct tpm_chip *chip) 50 { 51 struct acpi_table_header *buff; 52 struct acpi_tcpa *tcpa; 53 struct acpi_tpm2_trailer *tpm2_trailer; 54 acpi_status status; 55 void __iomem *virt; 56 u64 len, start; 57 int log_type; 58 struct tpm_bios_log *log; 59 bool is_tpm2 = chip->flags & TPM_CHIP_FLAG_TPM2; 60 acpi_string table_sig; 61 62 log = &chip->log; 63 64 /* Unfortuntely ACPI does not associate the event log with a specific 65 * TPM, like PPI. Thus all ACPI TPMs will read the same log. 66 */ 67 if (!chip->acpi_dev_handle) 68 return -ENODEV; 69 70 /* Find TCPA or TPM2 entry in RSDT (ACPI_LOGICAL_ADDRESSING) */ 71 table_sig = is_tpm2 ? ACPI_SIG_TPM2 : ACPI_SIG_TCPA; 72 status = acpi_get_table(table_sig, 1, &buff); 73 74 if (ACPI_FAILURE(status)) 75 return -ENODEV; 76 77 if (!is_tpm2) { 78 tcpa = (struct acpi_tcpa *)buff; 79 switch (tcpa->platform_class) { 80 case BIOS_SERVER: 81 len = tcpa->server.log_max_len; 82 start = tcpa->server.log_start_addr; 83 break; 84 case BIOS_CLIENT: 85 default: 86 len = tcpa->client.log_max_len; 87 start = tcpa->client.log_start_addr; 88 break; 89 } 90 log_type = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2; 91 } else if (buff->length == 92 sizeof(struct acpi_table_tpm2) + 93 sizeof(struct acpi_tpm2_trailer)) { 94 tpm2_trailer = (struct acpi_tpm2_trailer *)buff; 95 > 96 len = tpm2_trailer.minimum_log_length; 97 start = tpm2_trailer.log_address; 98 log_type = EFI_TCG2_EVENT_LOG_FORMAT_TCG_2; 99 } else { 100 return -ENODEV; 101 } 102 103 if (!len) { 104 dev_warn(&chip->dev, "%s: %s log area empty\n", 105 __func__, table_sig); 106 return -EIO; 107 } 108 109 /* malloc EventLog space */ 110 log->bios_event_log = kmalloc(len, GFP_KERNEL); 111 if (!log->bios_event_log) 112 return -ENOMEM; 113 114 log->bios_event_log_end = log->bios_event_log + len; 115 116 virt = acpi_os_map_iomem(start, len); 117 if (!virt) 118 goto err; 119 120 memcpy_fromio(log->bios_event_log, virt, len); 121 122 acpi_os_unmap_iomem(virt, len); 123 return log_type; 124 125 err: 126 kfree(log->bios_event_log); 127 log->bios_event_log = NULL; 128 return -EIO; 129 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip