[SRU][Bionic][PATCH] blk-mq: silence false positive warnings in hctx_unlock()

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU][Bionic][PATCH] blk-mq: silence false positive warnings in hctx_unlock()

Kamal Mostafa-2
From: Jens Axboe <[hidden email]>

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 <[hidden email]>
(backported from commit 08b5a6e2a769f720977b245431b45134c0bdd377)
Signed-off-by: Kamal Mostafa <[hidden email]>
---

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


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU][Bionic][PATCH] blk-mq: silence false positive warnings in hctx_unlock()

Colin Ian King-2
On 10/01/2020 23:24, Kamal Mostafa wrote:

> From: Jens Axboe <[hidden email]>
>
> 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 <[hidden email]>
> (backported from commit 08b5a6e2a769f720977b245431b45134c0bdd377)
> Signed-off-by: Kamal Mostafa <[hidden email]>
> ---
>
> 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);
>  }
>  
>
Acked-by: Colin Ian King <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK/Cmnt: [SRU][Bionic][PATCH] blk-mq: silence false positive warnings in hctx_unlock()

Andrea Righi
In reply to this post by Kamal Mostafa-2
On Fri, Jan 10, 2020 at 03:24:57PM -0800, Kamal Mostafa wrote:

> From: Jens Axboe <[hidden email]>
>
> 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 <[hidden email]>
> (backported from commit 08b5a6e2a769f720977b245431b45134c0bdd377)
> Signed-off-by: Kamal Mostafa <[hidden email]>
> ---
>
> 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

The bug report seems to be marked already as 'Fix Released' in bionic.
Maybe we need a new bug?

Apart than that:

Acked-by: Andrea Righi <[hidden email]>

>
> ---
>  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
>
>
> --
> kernel-team mailing list
> [hidden email]
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED: [SRU][Bionic][PATCH] blk-mq: silence false positive warnings in hctx_unlock()

Kleber Souza
In reply to this post by Kamal Mostafa-2
On 11.01.20 00:24, Kamal Mostafa wrote:

> From: Jens Axboe <[hidden email]>
>
> 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 <[hidden email]>
> (backported from commit 08b5a6e2a769f720977b245431b45134c0bdd377)
> Signed-off-by: Kamal Mostafa <[hidden email]>
> ---
>
> 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);
>  }
>  
>

Applied to bionic/linux.

Thanks,
Kleber

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team