[PATCH v3][next] NFSD: Avoid multiple -Wflex-array-member-not-at-end warnings

Gustavo A. R. Silva posted 1 patch 3 months, 3 weeks ago
fs/nfsd/nfsfh.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v3][next] NFSD: Avoid multiple -Wflex-array-member-not-at-end warnings
Posted by Gustavo A. R. Silva 3 months, 3 weeks ago
Replace flexible-array member with a fixed-size array.

With this changes, fix many instances of the following type of
warnings:

fs/nfsd/nfsfh.h:79:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
fs/nfsd/state.h:763:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
fs/nfsd/state.h:669:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
fs/nfsd/state.h:549:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
fs/nfsd/xdr4.h:705:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
fs/nfsd/xdr4.h:678:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]

Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
---
Changes in v3:
 - Replace flexible-array member with a fixed-size array. (NeilBrown)

Changes in v2:
 - Use indices into `fh_raw`. (Christoph)
 - Remove union and flexible-array member `fh_fsid`. (Christoph)
 - Link: https://lore.kernel.org/linux-hardening/aEoKCuQ1YDs2Ivn0@kspp/

v1:
 - Link: https://lore.kernel.org/linux-hardening/aBp37ZXBJM09yAXp@kspp/

 fs/nfsd/nfsfh.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h
index 5103c2f4d225..760e77f3630b 100644
--- a/fs/nfsd/nfsfh.h
+++ b/fs/nfsd/nfsfh.h
@@ -56,7 +56,7 @@ struct knfsd_fh {
 			u8		fh_auth_type;	/* deprecated */
 			u8		fh_fsid_type;
 			u8		fh_fileid_type;
-			u32		fh_fsid[]; /* flexible-array member */
+			u32		fh_fsid[NFS4_FHSIZE / 4 - 1];
 		};
 	};
 };
-- 
2.43.0
Re: [PATCH v3][next] NFSD: Avoid multiple -Wflex-array-member-not-at-end warnings
Posted by Chuck Lever 3 months, 3 weeks ago
From: Chuck Lever <chuck.lever@oracle.com>

On Mon, 16 Jun 2025 16:31:03 -0600, Gustavo A. R. Silva wrote:
> Replace flexible-array member with a fixed-size array.
> 
> With this changes, fix many instances of the following type of
> warnings:
> 
> fs/nfsd/nfsfh.h:79:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/state.h:763:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/state.h:669:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/state.h:549:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/xdr4.h:705:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/xdr4.h:678:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> 
> [...]

Applied to nfsd-testing, thanks!

[1/1] NFSD: Avoid multiple -Wflex-array-member-not-at-end warnings
      commit: 9aa83533d2e694c84d7d09f9c8eab29ad9f2adef

--
Chuck Lever
Re: [PATCH v3][next] NFSD: Avoid multiple -Wflex-array-member-not-at-end warnings
Posted by Gustavo A. R. Silva 3 months, 3 weeks ago
> Applied to nfsd-testing, thanks!
> 
> [1/1] NFSD: Avoid multiple -Wflex-array-member-not-at-end warnings
>        commit: 9aa83533d2e694c84d7d09f9c8eab29ad9f2adef
> 

Thank you, folks! :)

-Gustavo
Re: [PATCH v3][next] NFSD: Avoid multiple -Wflex-array-member-not-at-end warnings
Posted by Jeff Layton 3 months, 3 weeks ago
On Mon, 2025-06-16 at 16:31 -0600, Gustavo A. R. Silva wrote:
> Replace flexible-array member with a fixed-size array.
> 
> With this changes, fix many instances of the following type of
> warnings:
> 
> fs/nfsd/nfsfh.h:79:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/state.h:763:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/state.h:669:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/state.h:549:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/xdr4.h:705:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/xdr4.h:678:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> 
> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
> ---
> Changes in v3:
>  - Replace flexible-array member with a fixed-size array. (NeilBrown)
> 
> Changes in v2:
>  - Use indices into `fh_raw`. (Christoph)
>  - Remove union and flexible-array member `fh_fsid`. (Christoph)
>  - Link: https://lore.kernel.org/linux-hardening/aEoKCuQ1YDs2Ivn0@kspp/
> 
> v1:
>  - Link: https://lore.kernel.org/linux-hardening/aBp37ZXBJM09yAXp@kspp/
> 
>  fs/nfsd/nfsfh.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h
> index 5103c2f4d225..760e77f3630b 100644
> --- a/fs/nfsd/nfsfh.h
> +++ b/fs/nfsd/nfsfh.h
> @@ -56,7 +56,7 @@ struct knfsd_fh {
>  			u8		fh_auth_type;	/* deprecated */
>  			u8		fh_fsid_type;
>  			u8		fh_fileid_type;
> -			u32		fh_fsid[]; /* flexible-array member */
> +			u32		fh_fsid[NFS4_FHSIZE / 4 - 1];
>  		};
>  	};
>  };

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Re: [PATCH v3][next] NFSD: Avoid multiple -Wflex-array-member-not-at-end warnings
Posted by NeilBrown 3 months, 3 weeks ago
On Tue, 17 Jun 2025, Gustavo A. R. Silva wrote:
> Replace flexible-array member with a fixed-size array.
> 
> With this changes, fix many instances of the following type of
> warnings:
> 
> fs/nfsd/nfsfh.h:79:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/state.h:763:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/state.h:669:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/state.h:549:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/xdr4.h:705:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> fs/nfsd/xdr4.h:678:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
> 
> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
> ---
> Changes in v3:
>  - Replace flexible-array member with a fixed-size array. (NeilBrown)
> 
> Changes in v2:
>  - Use indices into `fh_raw`. (Christoph)
>  - Remove union and flexible-array member `fh_fsid`. (Christoph)
>  - Link: https://lore.kernel.org/linux-hardening/aEoKCuQ1YDs2Ivn0@kspp/
> 
> v1:
>  - Link: https://lore.kernel.org/linux-hardening/aBp37ZXBJM09yAXp@kspp/
> 
>  fs/nfsd/nfsfh.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h
> index 5103c2f4d225..760e77f3630b 100644
> --- a/fs/nfsd/nfsfh.h
> +++ b/fs/nfsd/nfsfh.h
> @@ -56,7 +56,7 @@ struct knfsd_fh {
>  			u8		fh_auth_type;	/* deprecated */
>  			u8		fh_fsid_type;
>  			u8		fh_fileid_type;
> -			u32		fh_fsid[]; /* flexible-array member */
> +			u32		fh_fsid[NFS4_FHSIZE / 4 - 1];
>  		};

Thanks.  I think this is a good and simple solution.

Reviewed-by: NeilBrown <neil@brown.name>


>  	};
>  };
> -- 
> 2.43.0
> 
>