On Wed, 12 Feb 2020 at 00:11, Gustavo A. R. Silva <gustavo@xxxxxxxxxxxxxx> wrote: > > The current codebase makes use of the zero-length array language > extension to the C90 standard, but the preferred mechanism to declare > variable-length types such as these ones is a flexible array member[1][2], > introduced in C99: > > struct foo { > int stuff; > struct boo array[]; > }; > > By making use of the mechanism above, we will get a compiler warning > in case the flexible array does not occur last in the structure, which > will help us prevent some kind of undefined behavior bugs from being > inadvertenly introduced[3] to the codebase from now on. > > This issue was found with the help of Coccinelle. > > [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html > [2] https://github.com/KSPP/linux/issues/21 > [3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour") > > Signed-off-by: Gustavo A. R. Silva <gustavo@xxxxxxxxxxxxxx> Queued in efi/next Thanks, > --- > drivers/firmware/efi/apple-properties.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/firmware/efi/apple-properties.c b/drivers/firmware/efi/apple-properties.c > index 0e206c9e0d7a..590c9003f3b4 100644 > --- a/drivers/firmware/efi/apple-properties.c > +++ b/drivers/firmware/efi/apple-properties.c > @@ -31,7 +31,7 @@ __setup("dump_apple_properties", dump_properties_enable); > struct dev_header { > u32 len; > u32 prop_count; > - struct efi_dev_path path[0]; > + struct efi_dev_path path[]; > /* > * followed by key/value pairs, each key and value preceded by u32 len, > * len includes itself, value may be empty (in which case its len is 4) > @@ -42,7 +42,7 @@ struct properties_header { > u32 len; > u32 version; > u32 dev_count; > - struct dev_header dev_header[0]; > + struct dev_header dev_header[]; > }; > > static void __init unmarshal_key_value_pairs(struct dev_header *dev_header, > -- > 2.25.0 >