Commit f6250e20 authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: convert flex-array declarations in xfs attr shortform objects



As of 6.5-rc1, UBSAN trips over the ondisk extended attribute shortform
definitions using an array length of 1 to pretend to be a flex array.
Kernel compilers have to support unbounded array declarations, so let's
correct this.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
parent a49bbce5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -591,7 +591,7 @@ struct xfs_attr_shortform {
		uint8_t valuelen;	/* actual length of value (no NULL) */
		uint8_t flags;	/* flags bits (see xfs_attr_leaf.h) */
		uint8_t nameval[];	/* name & value bytes concatenated */
	} list[1];			/* variable sized array */
	} list[];			/* variable sized array */
};

typedef struct xfs_attr_leaf_map {	/* RLE map of free bytes */
+1 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ xfs_check_ondisk_structs(void)
	XFS_CHECK_OFFSET(xfs_attr_leaf_name_remote_t, namelen,	8);
	XFS_CHECK_OFFSET(xfs_attr_leaf_name_remote_t, name,	9);
	XFS_CHECK_STRUCT_SIZE(xfs_attr_leafblock_t,		32);
	XFS_CHECK_STRUCT_SIZE(struct xfs_attr_shortform,	4);
	XFS_CHECK_OFFSET(struct xfs_attr_shortform, hdr.totsize, 0);
	XFS_CHECK_OFFSET(struct xfs_attr_shortform, hdr.count,	 2);
	XFS_CHECK_OFFSET(struct xfs_attr_shortform, list[0].namelen,	4);