]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
blk-mq: silence false positive warnings in hctx_unlock()
authorJens Axboe <axboe@kernel.dk>
Fri, 10 Jan 2020 23:24:00 +0000 (00:24 +0100)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Fri, 14 Feb 2020 11:48:31 +0000 (12:48 +0100)
BugLink: https://bugs.launchpad.net/bugs/1848739
In some stupider versions of gcc, it complains:

block/blk-mq.c: In function ‘blk_mq_complete_request’:
./include/linux/srcu.h:175:2: warning: ‘srcu_idx’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  __srcu_read_unlock(sp, idx);
  ^
block/blk-mq.c:620:6: note: ‘srcu_idx’ was declared here
  int srcu_idx;
      ^

which is completely bogus, since we only use srcu_idx when
hctx->flags & BLK_MQ_F_BLOCKING is set, and that's the case where
hctx_lock() has initialized it.

Just set it to '0' in the normal path in hctx_lock() to silence
this annoying warning.

Fixes: 04ced159cec8 ("blk-mq: move hctx lock/unlock into a helper")
Fixes: 5197c05e16b4 ("blk-mq: protect completion path with RCU")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
(backported from commit 08b5a6e2a769f720977b245431b45134c0bdd377)
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Acked-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Andrea Righi <andrea.righi@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
block/blk-mq.c

index 52d41d92555e4829dabee692f4cc47679503c785..b4be8229a5cf6d55f6ccc5fa672e0bfa33989c96 100644 (file)
@@ -590,9 +590,11 @@ static void hctx_unlock(struct blk_mq_hw_ctx *hctx, int srcu_idx)
 
 static void hctx_lock(struct blk_mq_hw_ctx *hctx, int *srcu_idx)
 {
-       if (!(hctx->flags & BLK_MQ_F_BLOCKING))
+       if (!(hctx->flags & BLK_MQ_F_BLOCKING)) {
+               /* shut up gcc false positive */
+               *srcu_idx = 0;
                rcu_read_lock();
-       else
+       else
                *srcu_idx = srcu_read_lock(hctx->queue_rq_srcu);
 }