Blob Blame History Raw
From: Arnd Bergmann <arnd@arndb.de>
Date: Thu, 18 May 2017 15:33:29 +0200
Subject: [PATCH] Btrfs: work around maybe-uninitialized warning
Git-commit: 3c91ee6964114b1a4f54ae6b397c889576d91cf4
References: FATE#323952, FATE#322506
Patch-mainline: v4.13-rc1

A rewrite of btrfs_submit_direct_hook appears to have introduced a warning:

fs/btrfs/inode.c: In function 'btrfs_submit_direct_hook':
fs/btrfs/inode.c:8467:14: error: 'bio' may be used uninitialized in this function [-Werror=maybe-uninitialized]

Where the 'bio' variable was previously initialized unconditionally, it
is now set in the "while (submit_len > 0)" loop that would never execute
if submit_len is zero.

Assuming this cannot happen in practice, we can avoid the warning
by simply replacing the while{} loop with a do{}while() loop so
the compiler knows that it will always be entered at least once.

Fixes changes introduced in "Btrfs: use bio_clone_bioset_partial to
simplify DIO submit".

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David Sterba <dsterba@suse.com>
Acked-by: Hannes Reinecke <hare@suse.com>
---
 fs/btrfs/inode.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 0c70e05..55223b7 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -8477,7 +8477,7 @@ static int btrfs_submit_direct_hook(struct btrfs_dio_private *dip,
 	/* bio split */
 	ASSERT(map_length <= INT_MAX);
 	atomic_inc(&dip->pending_bios);
-	while (submit_len > 0) {
+	do {
 		clone_len = min_t(int, submit_len, map_length);
 
 		/*
@@ -8520,7 +8520,7 @@ static int btrfs_submit_direct_hook(struct btrfs_dio_private *dip,
 				      start_sector << 9, &map_length, NULL, 0);
 		if (ret)
 			goto out_err;
-	}
+	} while (submit_len > 0);
 
 submit:
 	ret = __btrfs_submit_dio_bio(bio, inode, file_offset, skip_sum,
-- 
1.8.5.6