Patch "block: Fix race triggered by blk_set_queue_dying()" has been added to the 4.7-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
block: Fix race triggered by blk_set_queue_dying()
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
block-fix-race-triggered-by-blk_set_queue_dying.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
1b856086813be9371929b6cc62045f9fd470f5a0Mon Sep 17 00:00:00 2001
From: Bart Van Assche <[email protected]>
Date: Tue, 16 Aug 2016 16:48:36 -0700
Subject: block: Fix race triggered by blk_set_queue_dying()
From: Bart Van Assche <[email protected]>
commit 1b856086813be9371929b6cc62045f9fd470f5a0 upstream.
blk_set_queue_dying() can be called while another thread is submitting I/O or changing queue flags, e.g. through dm_stop_queue(). Hence protect the QUEUE_FLAG_DYING flag change with locking.
--- block/blk-core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
block/blk-core.c +3 -1
@@ -515,7 +515,9 @@ EXPORT_SYMBOL_GPL(blk_queue_bypass_end);void blk_set_queue_dying (struct request_queue *q) { -queue_flag_set_unlocked (QUEUE_FLAG_DYING , q); +spin_lock_irq (q->queue_lock); +queue_flag_set (QUEUE_FLAG_DYING , q); +spin_unlock_irq (q->queue_lock);if (q->mq_ops)blk_mq_wake_waiters (q);
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/block-fix-race-triggered-by-blk_set_queue_dying.patch