[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.2.00.0910062202590.5950@localhost.localdomain>
Date: Tue, 6 Oct 2009 22:07:53 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: Remy Bohmer <linux@...mer.net>
cc: LKML <linux-kernel@...r.kernel.org>,
rt-users <linux-rt-users@...r.kernel.org>
Subject: Re: [ANNOUNCE] 2.6.31.2-rt13
On Tue, 6 Oct 2009, Thomas Gleixner wrote:
> On Tue, 6 Oct 2009, Remy Bohmer wrote:
> > But I was wondering if you missed this one:
> > http://patchwork.kernel.org/patch/50044/
>
> Yup, slipped through. Queued for the next release.
Correction. I dropped the patch as it is just a sloppy work around.
Why creating the thread in the first place ? Real fix below.
Thanks,
tglx
---
diff --git a/kernel/softirq.c b/kernel/softirq.c
index aae8d45..3526976 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -1161,6 +1161,8 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb,
per_cpu(ksoftirqd, hotcpu)[i].tsk = NULL;
}
for (i = 0; i < NR_SOFTIRQS; i++) {
+ if (!softirq_names[i])
+ continue;
p = kthread_create(ksoftirqd,
&per_cpu(ksoftirqd, hotcpu)[i],
"sirq-%s/%d", softirq_names[i],
@@ -1177,8 +1179,11 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb,
break;
case CPU_ONLINE:
case CPU_ONLINE_FROZEN:
- for (i = 0; i < NR_SOFTIRQS; i++)
- wake_up_process(per_cpu(ksoftirqd, hotcpu)[i].tsk);
+ for (i = 0; i < NR_SOFTIRQS; i++) {
+ p = per_cpu(ksoftirqd, hotcpu)[i].tsk;
+ if (p)
+ wake_up_process(p);
+ }
break;
#ifdef CONFIG_HOTPLUG_CPU
case CPU_UP_CANCELED:
@@ -1192,9 +1197,11 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb,
for (i = 0; i < NR_SOFTIRQS; i++) {
param.sched_priority = MAX_RT_PRIO-1;
p = per_cpu(ksoftirqd, hotcpu)[i].tsk;
- sched_setscheduler(p, SCHED_FIFO, ¶m);
- per_cpu(ksoftirqd, hotcpu)[i].tsk = NULL;
- kthread_stop(p);
+ if (p) {
+ sched_setscheduler(p, SCHED_FIFO, ¶m);
+ per_cpu(ksoftirqd, hotcpu)[i].tsk = NULL;
+ kthread_stop(p);
+ }
}
takeover_tasklets(hotcpu);
break;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists