.. | .. |
---|
90 | 90 | return -ENODEV; |
---|
91 | 91 | |
---|
92 | 92 | if (tbl->header.length < |
---|
93 | | - sizeof(*tbl) + sizeof(struct acpi_tpm2_phy)) |
---|
| 93 | + sizeof(*tbl) + sizeof(struct acpi_tpm2_phy)) { |
---|
| 94 | + acpi_put_table((struct acpi_table_header *)tbl); |
---|
94 | 95 | return -ENODEV; |
---|
| 96 | + } |
---|
95 | 97 | |
---|
96 | 98 | tpm2_phy = (void *)tbl + sizeof(*tbl); |
---|
97 | 99 | len = tpm2_phy->log_area_minimum_length; |
---|
98 | 100 | |
---|
99 | 101 | start = tpm2_phy->log_area_start_address; |
---|
100 | | - if (!start || !len) |
---|
| 102 | + if (!start || !len) { |
---|
| 103 | + acpi_put_table((struct acpi_table_header *)tbl); |
---|
101 | 104 | return -ENODEV; |
---|
| 105 | + } |
---|
102 | 106 | |
---|
| 107 | + acpi_put_table((struct acpi_table_header *)tbl); |
---|
103 | 108 | format = EFI_TCG2_EVENT_LOG_FORMAT_TCG_2; |
---|
104 | 109 | } else { |
---|
105 | 110 | /* Find TCPA entry in RSDT (ACPI_LOGICAL_ADDRESSING) */ |
---|
.. | .. |
---|
120 | 125 | break; |
---|
121 | 126 | } |
---|
122 | 127 | |
---|
| 128 | + acpi_put_table((struct acpi_table_header *)buff); |
---|
123 | 129 | format = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2; |
---|
124 | 130 | } |
---|
| 131 | + |
---|
125 | 132 | if (!len) { |
---|
126 | 133 | dev_warn(&chip->dev, "%s: TCPA log area empty\n", __func__); |
---|
127 | 134 | return -EIO; |
---|
.. | .. |
---|
136 | 143 | |
---|
137 | 144 | ret = -EIO; |
---|
138 | 145 | virt = acpi_os_map_iomem(start, len); |
---|
139 | | - if (!virt) |
---|
| 146 | + if (!virt) { |
---|
| 147 | + dev_warn(&chip->dev, "%s: Failed to map ACPI memory\n", __func__); |
---|
| 148 | + /* try EFI log next */ |
---|
| 149 | + ret = -ENODEV; |
---|
140 | 150 | goto err; |
---|
| 151 | + } |
---|
141 | 152 | |
---|
142 | 153 | memcpy_fromio(log->bios_event_log, virt, len); |
---|
143 | 154 | |
---|
.. | .. |
---|
156 | 167 | kfree(log->bios_event_log); |
---|
157 | 168 | log->bios_event_log = NULL; |
---|
158 | 169 | return ret; |
---|
159 | | - |
---|
160 | 170 | } |
---|