ocfs2: avoid -Wflex-array-member-not-at-end warning
-Wflex-array-member-not-at-end was introduced in GCC-14, and we are getting ready to enable it, globally. Use the new TRAILING_OVERLAP() helper to fix the following warning: fs/ocfs2/xattr.c:52:41: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] This helper creates a union between a flexible-array member (FAM) and a set of MEMBERS that would otherwise follow it. This overlays the trailing MEMBER struct ocfs2_extent_rec er; onto the FAM struct ocfs2_xattr_value_root::xr_list.l_recs[], while keeping the FAM and the start of MEMBER aligned. The static_assert() ensures this alignment remains, and it's intentionally placed inmediately after the related structure --no blank line in between. Link: https://lkml.kernel.org/r/aRKm_7aN7Smc3J5L@kspp Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> Reviewed-by: Heming Zhao <heming.zhao@suse.com> Acked-by: Joseph Qi <joseph.qi@linux.alibaba.com> Cc: Mark Fasheh <mark@fasheh.com> Cc: Joel Becker <jlbec@evilplan.org> Cc: Junxiao Bi <junxiao.bi@oracle.com> Cc: Changwei Ge <gechangwei@live.cn> Cc: Jun Piao <piaojun@huawei.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>master
parent
7eff54dfd2
commit
76b9701a54
|
|
@ -49,9 +49,13 @@
|
|||
#include "ocfs2_trace.h"
|
||||
|
||||
struct ocfs2_xattr_def_value_root {
|
||||
struct ocfs2_xattr_value_root xv;
|
||||
struct ocfs2_extent_rec er;
|
||||
/* Must be last as it ends in a flexible-array member. */
|
||||
TRAILING_OVERLAP(struct ocfs2_xattr_value_root, xv, xr_list.l_recs,
|
||||
struct ocfs2_extent_rec er;
|
||||
);
|
||||
};
|
||||
static_assert(offsetof(struct ocfs2_xattr_def_value_root, xv.xr_list.l_recs) ==
|
||||
offsetof(struct ocfs2_xattr_def_value_root, er));
|
||||
|
||||
struct ocfs2_xattr_bucket {
|
||||
/* The inode these xattrs are associated with */
|
||||
|
|
|
|||
Loading…
Reference in New Issue