gcc-9: don’t warn about uninitialized btrfs extent_type variable [Linux 5.1]

gcc-9: don’t warn about uninitialized btrfs extent_type variable [Linux 5.1]

This Linux kernel change "gcc-9: don’t warn about uninitialized btrfs extent_type variable" is included in the Linux 5.1 release. This change is authored by Linus Torvalds <torvalds [at] linux-foundation.org> on Wed May 1 12:19:20 2019 -0700. The commit for this change in Linux stable tree is 7e74e23 (patch).

gcc-9: don't warn about uninitialized btrfs extent_type variable

The 'extent_type' variable does seem to be reliably initialized, but
it's _very_ non-obvious, since there's a "goto next" case that jumps
over the normal initialization.  That will then always trigger the
"start >= extent_end" test, which will end up never falling through to
the use of that variable.

But the code is certainly not obvious, and the compiler warning looks
reasonable.  Make 'extent_type' an int, and initialize it to an invalid
negative value, which seems to be the common pattern in other places.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

There are 2 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 fs/btrfs/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 82fdda8..2973608 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6783,7 +6783,7 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode,
    u64 extent_start = 0;
    u64 extent_end = 0;
    u64 objectid = btrfs_ino(inode);
-   u8 extent_type;
+   int extent_type = -1;
    struct btrfs_path *path = NULL;
    struct btrfs_root *root = inode->root;
    struct btrfs_file_extent_item *item;

Leave a Reply

Your email address will not be published. Required fields are marked *