diff options
author | Mike Snitzer <snitzer@kernel.org> | 2023-02-16 12:10:05 -0500 |
---|---|---|
committer | Mike Snitzer <snitzer@kernel.org> | 2023-02-16 12:10:05 -0500 |
commit | f77692d65d54665d81815349cc727baa85e8b71d (patch) | |
tree | 5a3a18362f53370945bcc13289af5e91ea3cbe56 /drivers/md/dm.c | |
parent | 0ca44fcef241768fd25ee763b3d203b9852f269b (diff) |
dm: add cond_resched() to dm_wq_requeue_work()
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>
Diffstat (limited to 'drivers/md/dm.c')
-rw-r--r-- | drivers/md/dm.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 15b91959e433..adb002b8648d 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -1009,6 +1009,7 @@ static void dm_wq_requeue_work(struct work_struct *work) io->next = NULL; __dm_io_complete(io, false); io = next; + cond_resched(); } } |