diff --git a/block/blk-iolatency.c b/block/blk-iolatency.c index 1aaee6fb0f59..a0bdd8a5c94c 100644 --- a/block/blk-iolatency.c +++ b/block/blk-iolatency.c @@ -639,6 +639,11 @@ static void blkcg_iolatency_exit(struct rq_qos *rqos) timer_shutdown_sync(&blkiolat->timer); flush_work(&blkiolat->enable_work); blkcg_deactivate_policy(rqos->disk, &blkcg_policy_iolatency); + /* + * blkcg_deactivate_policy() invokes iolatency_pd_offline(), which may + * queue enable_work again when it clears the last latency target. + */ + flush_work(&blkiolat->enable_work); kfree(blkiolat); }