Skip to content

Commit 4b020ef

Browse files
X0RW3LLrafaeljw
authored andcommitted
ACPICA: iASL: Fix printing CDAT table header
When disassembling CDAT AML, the lack of CDAT's common ACPI table header should be taken into consideration when printing the table's actual header. As the table header lacks fields like Signature, header information is mangled and incorrect: # $ iasl -d -ds CDAT cdat.aml # Input file cdat.aml, Length 0xE4 (228) bytes # ACPI: ? 0x0000000000000000 000C01 (v00 ? 00180000 ?? 23456789) Both Signature and Length are printed incorrectly, and the remaining fields are not applicable for this special table. To fix this, verify acpi_gbl_CDAT is set (<-ds CDAT> via command line) and Header->Signature is an invalid nameseg (due to the presence of non-ASCII char(s)), then print only the explicitly-passed signature (ACPI_SIG_CDAT) and the table length as cast with a pointer to the struct acpi_table_cdat structure. Link: acpica/acpica@2b5586b4 Signed-off-by: Ahmed Salem <x0rw3ll@gmail.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent 12fd607 commit 4b020ef

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

drivers/acpi/acpica/tbprint.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,14 @@ acpi_tb_print_table_header(acpi_physical_address address,
121121
ACPI_CAST_PTR(struct acpi_table_rsdp,
122122
header)->revision,
123123
local_header.oem_id));
124+
} else if (acpi_gbl_CDAT && !acpi_ut_valid_nameseg(header->signature)) {
125+
126+
/* CDAT does not use the common ACPI table header */
127+
128+
ACPI_INFO(("%-4.4s 0x%8.8X%8.8X %06X",
129+
ACPI_SIG_CDAT, ACPI_FORMAT_UINT64(address),
130+
ACPI_CAST_PTR(struct acpi_table_cdat,
131+
header)->length));
124132
} else {
125133
/* Standard ACPI table with full common header */
126134

0 commit comments

Comments
 (0)