NFSD: Simplify struct knfsd_fh

Compilers are allowed to insert padding and reorder the
fields in a struct, so using a union of an array and a
struct in struct knfsd_fh is not reliable.

The position of elements in an array is more reliable.

Suggested-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
Chuck Lever 2025-06-20 08:31:55 -04:00
parent edf7b905bc
commit 03963793c8

View file

@ -49,17 +49,14 @@ struct knfsd_fh {
* Points to the current size while
* building a new file handle.
*/
union {
char fh_raw[NFS4_FHSIZE];
struct {
u8 fh_version; /* == 1 */
u8 fh_auth_type; /* deprecated */
u8 fh_fsid_type;
u8 fh_fileid_type;
};
};
u8 fh_raw[NFS4_FHSIZE];
};
#define fh_version fh_raw[0]
#define fh_auth_type fh_raw[1]
#define fh_fsid_type fh_raw[2]
#define fh_fileid_type fh_raw[3]
static inline u32 *fh_fsid(const struct knfsd_fh *fh)
{
return (u32 *)&fh->fh_raw[4];