diff mbox series

blk-mq: setup queue ->tag_set before initializing hctx

Message ID 20241014005115.2699642-1-ming.lei@redhat.com (mailing list archive)
State New, archived
Headers show
Series blk-mq: setup queue ->tag_set before initializing hctx | expand

Commit Message

Ming Lei Oct. 14, 2024, 12:51 a.m. UTC
Commit 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx")
needs to check queue mapping via tag set in hctx's cpuhp handler.

However, q->tag_set may not be setup yet when the cpuhp handler is
enabled, then kernel oops is triggered.

Fix the issue by setup queue tag_set before initializing hctx.

Reported-and-tested-by: Rick Koch <mr.rickkoch@gmail.com>
Closes: https://lore.kernel.org/linux-block/CANa58eeNDozLaBHKPLxSAhEy__FPfJT_F71W=sEQw49UCrC9PQ@mail.gmail.com
Fixes: 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
---
 block/blk-mq.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Christoph Hellwig Oct. 14, 2024, 5:57 a.m. UTC | #1
On Mon, Oct 14, 2024 at 08:51:15AM +0800, Ming Lei wrote:
> Commit 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx")

Overly long line.

Otherwise looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>
John Garry Oct. 14, 2024, 7:18 a.m. UTC | #2
On 14/10/2024 01:51, Ming Lei wrote:
> Commit 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx")
> needs to check queue mapping via tag set in hctx's cpuhp handler.
> 
> However, q->tag_set may not be setup yet when the cpuhp handler is
> enabled, then kernel oops is triggered.
> 
> Fix the issue by setup queue tag_set before initializing hctx.
> 
> Reported-and-tested-by: Rick Koch<mr.rickkoch@gmail.com>
> Closes:https://urldefense.com/v3/__https://lore.kernel.org/linux-block/ 
> CANa58eeNDozLaBHKPLxSAhEy__FPfJT_F71W=sEQw49UCrC9PQ@mail.gmail.com__;!! 
> ACWV5N9M2RV99hQ! 
> I8rs4BE3PAgb5C75MUXZygt6Rmrgq1Nf9gHkileqLC5dagKa9zQ7aaFcJDNZkQwwCAKyu0RXanbmTtnTcwOR$ 
> Fixes: 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx")
> Signed-off-by: Ming Lei<ming.lei@redhat.com>
> ---

Reviewed-by: John Garry <john.g.garry@oracle.com>
Jens Axboe Oct. 14, 2024, 2:16 p.m. UTC | #3
On Mon, 14 Oct 2024 08:51:15 +0800, Ming Lei wrote:
> Commit 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx")
> needs to check queue mapping via tag set in hctx's cpuhp handler.
> 
> However, q->tag_set may not be setup yet when the cpuhp handler is
> enabled, then kernel oops is triggered.
> 
> Fix the issue by setup queue tag_set before initializing hctx.
> 
> [...]

Applied, thanks!

[1/1] blk-mq: setup queue ->tag_set before initializing hctx
      commit: cd6279bd6e3c022bb74f88bd2299daf63ae519e6

Best regards,
diff mbox series

Patch

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 4b2c8e940f59..cf626e061dd7 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -4310,6 +4310,12 @@  int blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
 	/* mark the queue as mq asap */
 	q->mq_ops = set->ops;
 
+	/*
+	 * ->tag_set has to be setup before initialize hctx, which cpuphp
+	 * handler needs it for checking queue mapping
+	 */
+	q->tag_set = set;
+
 	if (blk_mq_alloc_ctxs(q))
 		goto err_exit;
 
@@ -4328,8 +4334,6 @@  int blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
 	INIT_WORK(&q->timeout_work, blk_mq_timeout_work);
 	blk_queue_rq_timeout(q, set->timeout ? set->timeout : 30 * HZ);
 
-	q->tag_set = set;
-
 	q->queue_flags |= QUEUE_FLAG_MQ_DEFAULT;
 
 	INIT_DELAYED_WORK(&q->requeue_work, blk_mq_requeue_work);