[SRU][Bionic][PATCH] blk-mq: silence false positive warnings in hctx_unlock()
Kamal Mostafa
kamal at canonical.com
Fri Jan 10 23:24:57 UTC 2020
From: Jens Axboe <axboe at kernel.dk>
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 at kernel.dk>
(backported from commit 08b5a6e2a769f720977b245431b45134c0bdd377)
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
BugLink: https://bugs.launchpad.net/bugs/1848739
Recent blk-mq patches to Bionic for this LP bug introduce more annoying
instances of this false-positive build warning. This trivial backport
from mainline hushes them.
-Kamal
---
block/blk-mq.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 52d41d92555e..b4be8229a5cf 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -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);
}
--
2.17.1
More information about the kernel-team
mailing list