]> www.infradead.org Git - nvme.git/commitdiff
gcc-15: acpi: sprinkle random '__nonstring' crumbles around
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Apr 2025 18:02:18 +0000 (11:02 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Apr 2025 18:57:54 +0000 (11:57 -0700)
This is not great: I'd much rather introduce a typedef that is a "ACPI
name byte buffer", and use that to mark these special 4-byte ACPI names
that do not use NUL termination.

But as noted in the previous commit ("gcc-15: make 'unterminated string
initialization' just a warning") gcc doesn't actually seem to support
that notion, so instead you have to just mark every single array
declaration individually.

So this is not pretty, but this gets rid of the bulk of the annoying
warnings during an allmodconfig build for me.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/acpi/acpica/aclocal.h
drivers/acpi/acpica/nsrepair2.c
drivers/acpi/tables.c
include/acpi/actbl.h

index 6f4fe47c955bd0121c88db4b6ae3bb98f2ffac13..6481c48c22bb7e476722349eaeeb156a475d4caf 100644 (file)
@@ -293,7 +293,7 @@ acpi_status (*acpi_internal_method) (struct acpi_walk_state * walk_state);
  * expected_return_btypes - Allowed type(s) for the return value
  */
 struct acpi_name_info {
-       char name[ACPI_NAMESEG_SIZE];
+       char name[ACPI_NAMESEG_SIZE] __nonstring;
        u16 argument_list;
        u8 expected_btypes;
 };
@@ -370,7 +370,7 @@ typedef acpi_status (*acpi_object_converter) (struct acpi_namespace_node *
                                              converted_object);
 
 struct acpi_simple_repair_info {
-       char name[ACPI_NAMESEG_SIZE];
+       char name[ACPI_NAMESEG_SIZE] __nonstring;
        u32 unexpected_btypes;
        u32 package_index;
        acpi_object_converter object_converter;
index 1bb7b71f07f1f6635420d370f140982fb6ecf834..330b5e4711daca6b660c9bd83f7f84186161080f 100644 (file)
@@ -25,7 +25,7 @@ acpi_status (*acpi_repair_function) (struct acpi_evaluate_info * info,
                                     return_object_ptr);
 
 typedef struct acpi_repair_info {
-       char name[ACPI_NAMESEG_SIZE];
+       char name[ACPI_NAMESEG_SIZE] __nonstring;
        acpi_repair_function repair_function;
 
 } acpi_repair_info;
index 2295abbecd14f5e9b5a6c948b6590df0de241305..b5205d464a8a2d6151c48b443ee4d9e4faba1416 100644 (file)
@@ -396,7 +396,7 @@ static u8 __init acpi_table_checksum(u8 *buffer, u32 length)
 }
 
 /* All but ACPI_SIG_RSDP and ACPI_SIG_FACS: */
-static const char table_sigs[][ACPI_NAMESEG_SIZE] __initconst = {
+static const char table_sigs[][ACPI_NAMESEG_SIZE] __initconst __nonstring = {
        ACPI_SIG_BERT, ACPI_SIG_BGRT, ACPI_SIG_CPEP, ACPI_SIG_ECDT,
        ACPI_SIG_EINJ, ACPI_SIG_ERST, ACPI_SIG_HEST, ACPI_SIG_MADT,
        ACPI_SIG_MSCT, ACPI_SIG_SBST, ACPI_SIG_SLIT, ACPI_SIG_SRAT,
index 451f6276da494f38ffc92a65c74ebfe966f86453..2fc89704be1797cad70297d2a19cd7440819d086 100644 (file)
@@ -66,7 +66,7 @@
  ******************************************************************************/
 
 struct acpi_table_header {
-       char signature[ACPI_NAMESEG_SIZE];      /* ASCII table signature */
+       char signature[ACPI_NAMESEG_SIZE] __nonstring;  /* ASCII table signature */
        u32 length;             /* Length of table in bytes, including this header */
        u8 revision;            /* ACPI Specification minor version number */
        u8 checksum;            /* To make sum of entire table == 0 */