lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 18 Jun 2014 11:21:07 -0400 From: Tejun Heo <tj@...nel.org> To: axboe@...nel.dk Cc: linux-kernel@...r.kernel.org, kmo@...erainc.com, nab@...ux-iscsi.org, Tejun Heo <tj@...nel.org> Subject: [PATCH 1/6] blk-mq: make blk_mq_stop_hw_queue() reliably block queue processing blk_mq_stop_hw_queue() has the following two issues. * BLK_MQ_S_STOPPED should be set before canceling the work items; otherwise, a new instance may proceed beyond STOPPED checking inbetween. * cancel_delayed_work() doesn't do anything to work instance already executing. Use cancel_delayed_work_sync() to ensure that the currently in-flight one is finished. Signed-off-by: Tejun Heo <tj@...nel.org> Cc: Jens Axboe <axboe@...nel.dk> Cc: Nicholas A. Bellinger <nab@...ux-iscsi.org> --- block/blk-mq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/blk-mq.c b/block/blk-mq.c index e11f5f8..4787c3d 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -862,9 +862,9 @@ EXPORT_SYMBOL(blk_mq_run_queues); void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx) { - cancel_delayed_work(&hctx->run_work); - cancel_delayed_work(&hctx->delay_work); set_bit(BLK_MQ_S_STOPPED, &hctx->state); + cancel_delayed_work_sync(&hctx->run_work); + cancel_delayed_work_sync(&hctx->delay_work); } EXPORT_SYMBOL(blk_mq_stop_hw_queue); -- 1.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists