Re: [PATCH v4] tpm: Parse event log from TPM2 ACPI table

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux Kernel Hardening]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux