• Arnd Bergmann's avatar
    bcache: avoid clang -Wunintialized warning · 78d4eb8a
    Arnd Bergmann authored
    clang has identified a code path in which it thinks a
    variable may be unused:
    
    drivers/md/bcache/alloc.c:333:4: error: variable 'bucket' is used uninitialized whenever 'if' condition is false
          [-Werror,-Wsometimes-uninitialized]
                            fifo_pop(&ca->free_inc, bucket);
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/md/bcache/util.h:219:27: note: expanded from macro 'fifo_pop'
     #define fifo_pop(fifo, i)       fifo_pop_front(fifo, (i))
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/md/bcache/util.h:189:6: note: expanded from macro 'fifo_pop_front'
            if (_r) {                                                       \
                ^~
    drivers/md/bcache/alloc.c:343:46: note: uninitialized use occurs here
                            allocator_wait(ca, bch_allocator_push(ca, bucket));
                                                                      ^~~~~~
    drivers/md/bcache/alloc.c:287:7: note: expanded from macro 'allocator_wait'
                    if (cond)                                               \
                        ^~~~
    drivers/md/bcache/alloc.c:333:4: note: remove the 'if' if its condition is always true
                            fifo_pop(&ca->free_inc, bucket);
                            ^
    drivers/md/bcache/util.h:219:27: note: expanded from macro 'fifo_pop'
     #define fifo_pop(fifo, i)       fifo_pop_front(fifo, (i))
                                    ^
    drivers/md/bcache/util.h:189:2: note: expanded from macro 'fifo_pop_front'
            if (_r) {                                                       \
            ^
    drivers/md/bcache/alloc.c:331:15: note: initialize the variable 'bucket' to silence this warning
                            long bucket;
                                       ^
    
    This cannot happen in practice because we only enter the loop
    if there is at least one element in the list.
    
    Slightly rearranging the code makes this clearer to both the
    reader and the compiler, which avoids the warning.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarNathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: default avatarColy Li <colyli@suse.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    78d4eb8a
alloc.c 18.8 KB