From: Mike Snitzer snitzer@kernel.org
commit f77692d65d54665d81815349cc727baa85e8b71d upstream.
Otherwise the while() loop in dm_wq_requeue_work() can result in a "dead loop" on systems that have preemption disabled. This is particularly problematic on single cpu systems.
Fixes: 8b211aaccb915 ("dm: add two stage requeue mechanism") Cc: stable@vger.kernel.org Signed-off-by: Mike Snitzer snitzer@kernel.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- drivers/md/dm.c | 1 + 1 file changed, 1 insertion(+)
--- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -1007,6 +1007,7 @@ static void dm_wq_requeue_work(struct wo io->next = NULL; __dm_io_complete(io, false); io = next; + cond_resched(); } }