diff mbox series

[RESEND,v4,2/6] block: save previous hardware queue count before udpate

Message ID ea9f8241d420025a1e9e553d2c966fcc8b32335c.1588080449.git.zhangweiping@didiglobal.com (mailing list archive)
State New, archived
Headers show
Series Fix potential kernel panic when increase hardware queue | expand

Commit Message

Weiping Zhang April 28, 2020, 1:29 p.m. UTC
blk_mq_realloc_tag_set_tags will update set->nr_hw_queues, so
save old set->nr_hw_queues before call this function.

Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Weiping Zhang <zhangweiping@didiglobal.com>
---
 block/blk-mq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ming Lei May 3, 2020, 2:50 a.m. UTC | #1
On Tue, Apr 28, 2020 at 9:29 PM Weiping Zhang
<zhangweiping@didiglobal.com> wrote:
>
> blk_mq_realloc_tag_set_tags will update set->nr_hw_queues, so
> save old set->nr_hw_queues before call this function.
>
> Reviewed-by: Bart Van Assche <bvanassche@acm.org>
> Signed-off-by: Weiping Zhang <zhangweiping@didiglobal.com>
> ---
>  block/blk-mq.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index f789b3e1b3ab..a79afbe60ca6 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -3347,11 +3347,11 @@ static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set,
>                 blk_mq_sysfs_unregister(q);
>         }
>
> +       prev_nr_hw_queues = set->nr_hw_queues;
>         if (blk_mq_realloc_tag_set_tags(set, set->nr_hw_queues, nr_hw_queues) <
>             0)
>                 goto reregister;
>
> -       prev_nr_hw_queues = set->nr_hw_queues;
>         set->nr_hw_queues = nr_hw_queues;
>         blk_mq_update_queue_map(set);
>  fallback:
> --
> 2.18.1
>

Reviewed-by: Ming Lei <ming.lei@redhat.com>

thanks,
Ming Lei
diff mbox series

Patch

diff --git a/block/blk-mq.c b/block/blk-mq.c
index f789b3e1b3ab..a79afbe60ca6 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -3347,11 +3347,11 @@  static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set,
 		blk_mq_sysfs_unregister(q);
 	}
 
+	prev_nr_hw_queues = set->nr_hw_queues;
 	if (blk_mq_realloc_tag_set_tags(set, set->nr_hw_queues, nr_hw_queues) <
 	    0)
 		goto reregister;
 
-	prev_nr_hw_queues = set->nr_hw_queues;
 	set->nr_hw_queues = nr_hw_queues;
 	blk_mq_update_queue_map(set);
 fallback: