Hello, Yi reported several kernel panics on: [16687.001777] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008 ... [16687.163549] pc : __rq_qos_track+0x38/0x60 or [ 997.690455] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020 ... [ 997.850347] pc : __rq_qos_done+0x2c/0x50 Turns out it is caused by race between adding wbt and normal IO. Fix the issue by freezing request queue when adding/deleting rq qos. V3: - use ->queue_lock for protecting concurrent adding/deleting rqos on same queue V2: - switch to the approach of freezing queue, which is more generic than V1. Ming Lei (2): block: fix race between adding/removing rq qos and normal IO block: mark queue init done at the end of blk_register_queue block/blk-rq-qos.h | 24 ++++++++++++++++++++++++ block/blk-sysfs.c | 29 +++++++++++++++-------------- 2 files changed, 39 insertions(+), 14 deletions(-) Cc: Yi Zhang <yi.zhang@xxxxxxxxxx> Cc: Bart Van Assche <bvanassche@xxxxxxx> -- 2.31.1