{
        struct blk_mq_hw_ctx *hctx;
        unsigned int i;
+       unsigned int flags = 0;
 
        queue_for_each_hw_ctx(q, hctx, i) {
                blk_mq_debugfs_unregister_sched_hctx(hctx);
                        e->type->ops.exit_hctx(hctx, i);
                        hctx->sched_data = NULL;
                }
+               flags = hctx->flags;
        }
        blk_mq_debugfs_unregister_sched(q);
        if (e->type->ops.exit_sched)
                e->type->ops.exit_sched(e);
        blk_mq_sched_tags_teardown(q);
-       if (blk_mq_is_sbitmap_shared(q->tag_set->flags))
+       if (blk_mq_is_sbitmap_shared(flags))
                blk_mq_exit_sched_shared_sbitmap(q);
        q->elevator = NULL;
 }