block: zoned: fix harmless maybe-uninitialized warning
authorArnd Bergmann <arnd@arndb.de>
Fri, 21 Oct 2016 15:42:33 +0000 (17:42 +0200)
committerJens Axboe <axboe@fb.com>
Tue, 25 Oct 2016 02:51:22 +0000 (20:51 -0600)
The blkdev_report_zones produces a harmless warning when
-Wmaybe-uninitialized is set, after gcc gets a little confused
about the multiple 'goto' here:

block/blk-zoned.c: In function 'blkdev_report_zones':
block/blk-zoned.c:188:13: error: 'nz' may be used uninitialized in this function [-Werror=maybe-uninitialized]

Moving the assignment to nr_zones makes this a little simpler
while also avoiding the warning reliably. I'm removing the
extraneous initialization of 'int ret' in the same patch, as
that is semi-related and could cause an uninitialized use of
that variable to not produce a warning.

Fixes: 6a0cb1bc106f ("block: Implement support for zoned block devices")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Shaun Tancheff <shaun.tancheff@seagate.com>
Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/blk-zoned.c

index 667f95d8669590642aae4b9cb127394db349e4f9..472211fa183a6488ef93676a2f89b2f345947c9a 100644 (file)
@@ -80,7 +80,7 @@ int blkdev_report_zones(struct block_device *bdev,
        unsigned int i, n, nz;
        unsigned int ofst;
        void *addr;
-       int ret = 0;
+       int ret;
 
        if (!q)
                return -ENXIO;
@@ -179,14 +179,12 @@ int blkdev_report_zones(struct block_device *bdev,
 
        }
 
+       *nr_zones = nz;
 out:
        bio_for_each_segment_all(bv, bio, i)
                __free_page(bv->bv_page);
        bio_put(bio);
 
-       if (ret == 0)
-               *nr_zones = nz;
-
        return ret;
 }
 EXPORT_SYMBOL_GPL(blkdev_report_zones);