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 <l...@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: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

Reply via email to