Spotted by Andrea: we need the barriers in there to prevent reads passing
ahead of the setting of current->state.


---

 25-akpm/kernel/softirq.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff -puN kernel/softirq.c~ksoftirqd-barrier kernel/softirq.c
--- 25/kernel/softirq.c~ksoftirqd-barrier	Mon Mar 29 15:32:29 2004
+++ 25-akpm/kernel/softirq.c	Mon Mar 29 16:27:56 2004
@@ -342,7 +342,7 @@ static int ksoftirqd(void * __bind_cpu)
 			cond_resched();
 		}
 
-		__set_current_state(TASK_INTERRUPTIBLE);
+		set_current_state(TASK_INTERRUPTIBLE);
 	}
 	__set_current_state(TASK_RUNNING);
 	return 0;
@@ -350,10 +350,10 @@ static int ksoftirqd(void * __bind_cpu)
 wait_to_die:
 	preempt_enable();
 	/* Wait for kthread_stop */
-	__set_current_state(TASK_INTERRUPTIBLE);
+	set_current_state(TASK_INTERRUPTIBLE);
 	while (!kthread_should_stop()) {
 		schedule();
-		__set_current_state(TASK_INTERRUPTIBLE);
+		set_current_state(TASK_INTERRUPTIBLE);
 	}
 	__set_current_state(TASK_RUNNING);
 	return 0;

_