ext2: avoid bogus -Wmaybe-uninitialized warning
authorArnd Bergmann <arnd@arndb.de>
Mon, 17 Oct 2016 22:05:34 +0000 (00:05 +0200)
committerJan Kara <jack@suse.cz>
Tue, 18 Oct 2016 09:29:35 +0000 (11:29 +0200)
commite952813e210b3addaea063da64ef68c3f30c0aa2
tree3bb21ccb56cf2bbce398090b01e58d992f8ca590
parenta2ed0b391dd9c3ef1d64c7c3e370f4a5ffcd324a
ext2: avoid bogus -Wmaybe-uninitialized warning

On ARM, we get this false-positive warning since the rework of
the ext2_get_blocks interface:

fs/ext2/inode.c: In function 'ext2_get_block':
include/linux/buffer_head.h:340:16: error: 'bno' may be used uninitialized in this function [-Werror=maybe-uninitialized]

The calling conventions for this function are rather complex, and it's
not surprising that the compiler gets this wrong, I spent a long time
trying to understand how it all fits together myself.

This change to avoid the warning makes sure the compiler sees that we
always set 'bno' pointer whenever we have a positive return code.
The transformation is correct because we always arrive at the 'got_it'
label with a positive count that gets used as the return value, while
any branch to the 'cleanup' label has a negative or zero 'err'.

Fixes: 6750ad71986d ("ext2: stop passing buffer_head to ext2_get_blocks")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Dave Chinner <david@fromorbit.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/ext2/inode.c