]> www.infradead.org Git - users/hch/misc.git/commitdiff
btrfs: send: fix -Wflex-array-member-not-at-end warning in struct send_ctx
authorGustavo A. R. Silva <gustavoars@kernel.org>
Fri, 3 Oct 2025 14:11:06 +0000 (15:11 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 13 Oct 2025 20:36:38 +0000 (22:36 +0200)
The warning -Wflex-array-member-not-at-end was introduced in GCC-14, and
we are getting ready to enable it, globally.

Fix the following warning:

  fs/btrfs/send.c:181:24: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]

and move the declaration of send_ctx::cur_inode_path to the end.

Notice that struct fs_path contains a flexible array member inline_buf,
but also a padding array and a limit calculated for the usable space of
inline_buf (FS_PATH_INLINE_SIZE). It is not the pattern where flexible
array is in the middle of a structure and could potentially overwrite
other members.

Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/send.c

index 9230e5066fc6b7a877493ff729af10271539e4ed..6144e66661f583abefc105ae74823485855cd2ed 100644 (file)
@@ -178,7 +178,6 @@ struct send_ctx {
        u64 cur_inode_rdev;
        u64 cur_inode_last_extent;
        u64 cur_inode_next_write_offset;
-       struct fs_path cur_inode_path;
        bool cur_inode_new;
        bool cur_inode_new_gen;
        bool cur_inode_deleted;
@@ -305,6 +304,9 @@ struct send_ctx {
 
        struct btrfs_lru_cache dir_created_cache;
        struct btrfs_lru_cache dir_utimes_cache;
+
+       /* Must be last as it ends in a flexible-array member. */
+       struct fs_path cur_inode_path;
 };
 
 struct pending_dir_move {