gcc-9: don't warn about uninitialized btrfs extent_type variable
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 1 May 2019 19:19:20 +0000 (12:19 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 1 May 2019 19:19:20 +0000 (12:19 -0700)
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>
fs/btrfs/inode.c

index 82fdda8..2973608 100644 (file)
@@ -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;