block: cleanup q->srcu
authorMing Lei <ming.lei@redhat.com>
Tue, 11 Jan 2022 12:34:01 +0000 (20:34 +0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 17 Jan 2022 14:24:45 +0000 (07:24 -0700)
srcu structure has to be cleanup via cleanup_srcu_struct(), so fix it.

Reported-by: syzbot+4f789823c1abc5accf13@syzkaller.appspotmail.com
Fixes: 704b914f15fb ("blk-mq: move srcu from blk_mq_hw_ctx to request_queue")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220111123401.520192-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-sysfs.c

index bed4a2facd652028cc27b2be3b3da07c6a3817d2..9f32882ceb2f651c2bc227e62f7367a1962d5e70 100644 (file)
@@ -811,6 +811,9 @@ static void blk_release_queue(struct kobject *kobj)
 
        bioset_exit(&q->bio_split);
 
+       if (blk_queue_has_srcu(q))
+               cleanup_srcu_struct(q->srcu);
+
        ida_simple_remove(&blk_queue_ida, q->id);
        call_rcu(&q->rcu_head, blk_free_queue_rcu);
 }