]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
coredump: add cond_resched() to dump_user_range
authorRik van Riel <riel@surriel.com>
Thu, 10 Oct 2024 15:36:51 +0000 (11:36 -0400)
committerChristian Brauner <brauner@kernel.org>
Tue, 22 Oct 2024 09:16:58 +0000 (11:16 +0200)
The loop between elf_core_dump() and dump_user_range() can run for
so long that the system shows softlockup messages, with side effects
like workqueues and RCU getting stuck on the core dumping CPU.

Add a cond_resched() in dump_user_range() to avoid that softlockup.

Signed-off-by: Rik van Riel <riel@surriel.com>
Link: https://lore.kernel.org/r/20241010113651.50cb0366@imladris.surriel.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/coredump.c

index 45737b43dda5c8a0f52bb925e21d8334d8c4138f..d48edb37bc35c0896d97a2f6a6cc259d8812f936 100644 (file)
@@ -951,6 +951,7 @@ int dump_user_range(struct coredump_params *cprm, unsigned long start,
                } else {
                        dump_skip(cprm, PAGE_SIZE);
                }
+               cond_resched();
        }
        dump_page_free(dump_page);
        return 1;