diff mbox series

[1/1] ACPI: XSDT: struct acpi_table_xsdt must be packed

Message ID 20231111134827.174908-1-heinrich.schuchardt@canonical.com
State New
Headers show
Series [1/1] ACPI: XSDT: struct acpi_table_xsdt must be packed | expand

Commit Message

Heinrich Schuchardt Nov. 11, 2023, 1:48 p.m. UTC
According to the ACPI 6.5 specification the component Entry starts at
offset 36 in the XSDT table which is not a multiple of 8. Hence we must
mark the structure as packed.

We did not see an error due to the incorrect packing yet as in
acpi_tb_parse_root_table() we use ACPI_ADD_PTR() to find the address of
Entry.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 include/acpi/actbl.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Rafael J. Wysocki Dec. 6, 2023, 4:30 p.m. UTC | #1
On Sat, Nov 11, 2023 at 2:48 PM Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> According to the ACPI 6.5 specification the component Entry starts at
> offset 36 in the XSDT table which is not a multiple of 8. Hence we must
> mark the structure as packed.

There is #pragma pack(1) at the beginning of actbl.h.  Is it not sufficient?

> We did not see an error due to the incorrect packing yet as in
> acpi_tb_parse_root_table() we use ACPI_ADD_PTR() to find the address of
> Entry.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  include/acpi/actbl.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h
> index 451f6276da49..1a37ac378765 100644
> --- a/include/acpi/actbl.h
> +++ b/include/acpi/actbl.h
> @@ -148,7 +148,7 @@ struct acpi_table_rsdt {
>  struct acpi_table_xsdt {
>         struct acpi_table_header header;        /* Common ACPI table header */
>         u64 table_offset_entry[1];      /* Array of pointers to ACPI tables */
> -};
> +} __packed;
>
>  #define ACPI_RSDT_ENTRY_SIZE        (sizeof (u32))
>  #define ACPI_XSDT_ENTRY_SIZE        (sizeof (u64))
> --
> 2.40.1
>
Heinrich Schuchardt Dec. 6, 2023, 4:37 p.m. UTC | #2
On 06.12.23 17:30, Rafael J. Wysocki wrote:
> On Sat, Nov 11, 2023 at 2:48 PM Heinrich Schuchardt
> <heinrich.schuchardt@canonical.com> wrote:
>>
>> According to the ACPI 6.5 specification the component Entry starts at
>> offset 36 in the XSDT table which is not a multiple of 8. Hence we must
>> mark the structure as packed.
> 
> There is #pragma pack(1) at the beginning of actbl.h.  Is it not sufficient?

Sorry I missed that pragma.

> 
>> We did not see an error due to the incorrect packing yet as in
>> acpi_tb_parse_root_table() we use ACPI_ADD_PTR() to find the address of
>> Entry.
>>
>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
>> ---
>>   include/acpi/actbl.h | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h
>> index 451f6276da49..1a37ac378765 100644
>> --- a/include/acpi/actbl.h
>> +++ b/include/acpi/actbl.h
>> @@ -148,7 +148,7 @@ struct acpi_table_rsdt {
>>   struct acpi_table_xsdt {
>>          struct acpi_table_header header;        /* Common ACPI table header */
>>          u64 table_offset_entry[1];      /* Array of pointers to ACPI tables */
>> -};
>> +} __packed;
>>
>>   #define ACPI_RSDT_ENTRY_SIZE        (sizeof (u32))
>>   #define ACPI_XSDT_ENTRY_SIZE        (sizeof (u64))
>> --
>> 2.40.1
>>
diff mbox series

Patch

diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h
index 451f6276da49..1a37ac378765 100644
--- a/include/acpi/actbl.h
+++ b/include/acpi/actbl.h
@@ -148,7 +148,7 @@  struct acpi_table_rsdt {
 struct acpi_table_xsdt {
 	struct acpi_table_header header;	/* Common ACPI table header */
 	u64 table_offset_entry[1];	/* Array of pointers to ACPI tables */
-};
+} __packed;
 
 #define ACPI_RSDT_ENTRY_SIZE        (sizeof (u32))
 #define ACPI_XSDT_ENTRY_SIZE        (sizeof (u64))