• Gustavo A. R. Silva's avatar
    crypto: nx - Avoid -Wflex-array-member-not-at-end warning · 1e6b251c
    Gustavo A. R. Silva authored
    -Wflex-array-member-not-at-end is coming in GCC-14, and we are getting
    ready to enable it globally. So, we are deprecating flexible-array
    members in the middle of another structure.
    
    There is currently an object (`header`) in `struct nx842_crypto_ctx`
    that contains a flexible structure (`struct nx842_crypto_header`):
    
    struct nx842_crypto_ctx {
    	...
            struct nx842_crypto_header header;
            struct nx842_crypto_header_group group[NX842_CRYPTO_GROUP_MAX];
    	...
    };
    
    So, in order to avoid ending up with a flexible-array member in the
    middle of another struct, we use the `struct_group_tagged()` helper to
    separate the flexible array from the rest of the members in the flexible
    structure:
    
    struct nx842_crypto_header {
    	struct_group_tagged(nx842_crypto_header_hdr, hdr,
    
    		... the rest of the members
    
    	);
            struct nx842_crypto_header_group group[];
    } __packed;
    
    With the change described above, we can now declare an object of the
    type of the tagged struct, without embedding the flexible array in the
    middle of another struct:
    
    struct nx842_crypto_ctx {
    	...
            struct nx842_crypto_header_hdr header;
            struct nx842_crypto_header_group group[NX842_CRYPTO_GROUP_MAX];
    	...
     } __packed;
    
    We also use `container_of()` whenever we need to retrieve a pointer to
    the flexible structure, through which we can access the flexible
    array if needed.
    
    So, with these changes, fix the following warning:
    
    In file included from drivers/crypto/nx/nx-842.c:55:
    drivers/crypto/nx/nx-842.h:174:36: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
      174 |         struct nx842_crypto_header header;
          |                                    ^~~~~~
    Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    1e6b251c
nx-842.c 14.5 KB