It's reported [1] that a task_work queued at a wrong time can prevent freezing and make the tasks to spin in get_signal() taking 100% of CPU. Patch 1 is a preparation. Patch 2 addresses the issue. [1] https://github.com/systemd/systemd/issues/33626 v3: Slightly adjust commit messages v2: Move task_work_run() into do_freezer_trap() Correct the Fixes tag is 2/2 Pavel Begunkov (2): io_uring/io-wq: limit retrying worker initialisation kernel: rerun task_work while freezing in get_signal() io_uring/io-wq.c | 10 +++++++--- kernel/signal.c | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) -- 2.44.0