On Mon, Jul 16, 2012 at 10:42:37AM -0000, Thomas Gleixner wrote:
> Signed-off-by: Thomas Gleixner <t...@linutronix.de>
> ---
>  kernel/softirq.c |  107 
> +++++++++++++------------------------------------------
>  1 file changed, 26 insertions(+), 81 deletions(-)

This is also much more compact!  One issue with fix below.

                                                        Thanx, Paul

[ . . . ]

> +static void run_ksoftirqd(unsigned int cpu)
> +{
> +     local_irq_disable();
> +     if (local_softirq_pending()) {
> +             __do_softirq();
> +             local_irq_enable();
> +             cond_resched();
> +             rcu_note_context_switch(cpu);

The rcu_note_context_switch() function must run with preemption disabled.
I fixed this as follows:

+static void run_ksoftirqd(unsigned int cpu)
+{
+       local_irq_disable();
+       if (local_softirq_pending()) {
+               __do_softirq();
+               rcu_note_context_switch(cpu);
+               local_irq_enable();
+               cond_resched();
+               return;
        }

Again, I also placed the updated series on -rcu at branch rcu/smp/hotplug
(git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git),
based on tip/smp/hotplug, for Linaro testing purposes.

With these two changes, this series merged with Tejun's workqueue
hotplug changes merged with my -rcu tree passed moderate rcutorture
and hotplug testing, with the exception of some apparently unrelated
build problems in UP configuration:

warning: call to ‘copy_from_user_overflow’ declared with attribute warning: 
copy_from_user() buffer size is not provably correct [enabled by default

I have a fix for an earlier occurrence of this problem that I will try next.

                                                        Thanx, Paul

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to