Re: [PATCH][next] UAPI: nfsfh.h: Replace one-element array with flexible-array member

From: Gustavo A. R. Silva
Date: Thu Mar 25 2021 - 18:13:28 EST




On 3/25/21 10:29, David Laight wrote:

>>>
>>> Could you use the simpler:
>>>> struct nfs_fhbase_new {
>>>> __u8 fb_version;
>>>> __u8 fb_auth_type;
>>>> __u8 fb_fsid_type;
>>>> __u8 fb_fileid_type;
>>>> union {
>>>> __u32 fb_auth[1];
>>>> __u32 fb_auth_flex[0];
>>>> };
>>>> };
>>>
>>> Although I'm not certain flexible arrays are supported
>>> as the last element of a union.
>>
>> Nope; this is not allowed: https://godbolt.org/z/14vd4o8na
>
> Nothing an extra 'struct {__u32 fb_auth_flex[0]; }'; won't solve.

We don't want to introduce zero-length arrays [1].

--
Gustavo

[1] https://www.kernel.org/doc/html/v5.10/process/deprecated.html#zero-length-and-one-element-arrays