[PATCH v3] tpm: Add support for event log pointer found in TPM2 ACPI table
kbuild test robot
lkp at intel.com
Wed Apr 1 05:07:46 UTC 2020
Hi Stefan,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on char-misc/char-misc-testing]
[also build test ERROR on v5.6 next-20200331]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Stefan-Berger/tpm-Add-support-for-event-log-pointer-found-in-TPM2-ACPI-table/20200401-055303
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git 5caf6102e32ead7ed5d21b5309c1a4a7d70e6a9f
config: x86_64-randconfig-s1-20200401 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-6) 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 at intel.com>
All errors (new ones prefixed by >>):
drivers/char/tpm/eventlog/acpi.c: In function 'tpm_read_log_acpi':
>> drivers/char/tpm/eventlog/acpi.c:70:12: error: 'struct acpi_table_tpm2' has no member named 'log_area_minimum_length'
len = tbl->log_area_minimum_length;
^~
>> drivers/char/tpm/eventlog/acpi.c:71:14: error: 'struct acpi_table_tpm2' has no member named 'log_area_start_address'
start = tbl->log_area_start_address;
^~
vim +70 drivers/char/tpm/eventlog/acpi.c
43
44 /* read binary bios log */
45 int tpm_read_log_acpi(struct tpm_chip *chip)
46 {
47 struct acpi_tcpa *buff;
48 acpi_status status;
49 void __iomem *virt;
50 u64 len, start;
51 struct tpm_bios_log *log;
52 struct acpi_table_tpm2 *tbl;
53 int format;
54
55 log = &chip->log;
56
57 /* Unfortuntely ACPI does not associate the event log with a specific
58 * TPM, like PPI. Thus all ACPI TPMs will read the same log.
59 */
60 if (!chip->acpi_dev_handle)
61 return -ENODEV;
62
63 if (chip->flags & TPM_CHIP_FLAG_TPM2) {
64 status = acpi_get_table("TPM2", 1,
65 (struct acpi_table_header **)&tbl);
66 if (ACPI_FAILURE(status))
67 return -ENODEV;
68 if (tbl->header.length < sizeof(*tbl))
69 return -ENODEV;
> 70 len = tbl->log_area_minimum_length;
> 71 start = tbl->log_area_start_address;
72 if (!start || !len)
73 return -ENODEV;
74 format = EFI_TCG2_EVENT_LOG_FORMAT_TCG_2;
75 } else {
76 /* Find TCPA entry in RSDT (ACPI_LOGICAL_ADDRESSING) */
77 status = acpi_get_table(ACPI_SIG_TCPA, 1,
78 (struct acpi_table_header **)&buff);
79
80 if (ACPI_FAILURE(status))
81 return -ENODEV;
82
83 switch (buff->platform_class) {
84 case BIOS_SERVER:
85 len = buff->server.log_max_len;
86 start = buff->server.log_start_addr;
87 break;
88 case BIOS_CLIENT:
89 default:
90 len = buff->client.log_max_len;
91 start = buff->client.log_start_addr;
92 break;
93 }
94 format = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
95 }
96 if (!len) {
97 dev_warn(&chip->dev, "%s: TCPA log area empty\n", __func__);
98 return -EIO;
99 }
100
101 /* malloc EventLog space */
102 log->bios_event_log = kmalloc(len, GFP_KERNEL);
103 if (!log->bios_event_log)
104 return -ENOMEM;
105
106 log->bios_event_log_end = log->bios_event_log + len;
107
108 virt = acpi_os_map_iomem(start, len);
109 if (!virt)
110 goto err;
111
112 memcpy_fromio(log->bios_event_log, virt, len);
113
114 acpi_os_unmap_iomem(virt, len);
115 return format;
116
117 err:
118 kfree(log->bios_event_log);
119 log->bios_event_log = NULL;
120 return -EIO;
121
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
More information about the Linux-security-module-archive
mailing list