Re: [RFC PATCH] freezer: allow killing of frozen tasks
From: Rafael J. Wysocki <hidden>
Date: 2013-08-20 12:13:05
Also in:
lkml
On Tuesday, August 20, 2013 01:20:03 PM Bartlomiej Zolnierkiewicz wrote:
Change __refrigerator() to allow SIGKILL signal handling during the frozen state (by setting task to a TASK_KILLABLE state instead of TASK_UNINTERRUPTIBLE one before entering sleep) and make tasks leave __refrigerator() upon receiving such signal. These changes allow frozen tasks to be killed immediately without the need to thaw them first. Signed-off-by: Bartlomiej Zolnierkiewicz <redacted> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Well, it doesn't sound like an entirely bad idea to me, but I'd like to know what Colin and Tejun (CCed now) think about it. Thanks, Rafael
quoted hunk ↗ jump to hunk
--- kernel/freezer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)diff --git a/kernel/freezer.c b/kernel/freezer.c index b462fa1..0c05a7a 100644 --- a/kernel/freezer.c +++ b/kernel/freezer.c@@ -57,12 +57,13 @@ bool __refrigerator(bool check_kthr_stop) pr_debug("%s entered refrigerator\n", current->comm); for (;;) { - set_current_state(TASK_UNINTERRUPTIBLE); + set_current_state(TASK_KILLABLE); spin_lock_irq(&freezer_lock); current->flags |= PF_FROZEN; if (!freezing(current) || - (check_kthr_stop && kthread_should_stop())) + (check_kthr_stop && kthread_should_stop()) || + fatal_signal_pending(current)) current->flags &= ~PF_FROZEN; spin_unlock_irq(&freezer_lock);
-- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.