Re: [PATCH 02/10] windfarm: dont die on suspend thread signal

Andrew Morton
2007-02-05T22:54:25Z

On Mon, 05 Feb 2007 19:30:29 +0100
Johannes Berg <johannes@sipsolutions.net> wrote:

> When the windfarm thread gets a suspend signal it will die instead of
> freezing. This fixes it.
>
> Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
> Cc: Andrew Morton <akpm@osdl.org>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
>
> ---
> Please apply to -mm.
>
> --- mb-wireless.orig/drivers/macintosh/windfarm_core.c 2007-02-05 14:24:06.344526864 +0100
> +++ mb-wireless/drivers/macintosh/windfarm_core.c 2007-02-05 14:24:38.264526864 +0100
> @@ -94,8 +94,6 @@ static int wf_thread_func(void *data)
> DBG("wf: thread started\n");
>
> while(!kthread_should_stop()) {
> - try_to_freeze();
> -
> if (time_after_eq(jiffies, next)) {
> wf_notify(WF_EVENT_TICK, NULL);
> if (wf_overtemp) {
> @@ -118,8 +116,8 @@ static int wf_thread_func(void *data)
> if (delay <= HZ)
> schedule_timeout_interruptible(delay);
>
> - /* there should be no signal, but oh well */
> - if (signal_pending(current)) {
> + /* there should be no non-suspend signal, but oh well */
> + if (signal_pending(current) && !try_to_freeze()) {
> printk(KERN_WARNING "windfarm: thread got sigl !\n");
> break;
> }
>
> --

That sounds like a fairly irritating feature. Should we backport this into 2.6.20?