important ppc64 bug fixes

Anton Blanchard anton at samba.org
Wed Nov 12 04:12:13 EST 2003


> - fix signal wakeup race due to unordered access of SIGPENDING and
>   TASK_INTERRUPTIBLE				(Anton)

The ppc64 specific part.

diff --exclude=SCCS -ur linux-2.5/arch/ppc64/kernel/signal.c for-linus-ppc64/arch/ppc64/kernel/signal.c
--- linux-2.5/arch/ppc64/kernel/signal.c	2003-07-17 06:09:04.000000000 +1000
+++ for-linus-ppc64/arch/ppc64/kernel/signal.c	2003-11-12 04:07:21.310243191 +1100
@@ -95,7 +95,7 @@
 	regs->gpr[3] = EINTR;
 	regs->ccr |= 0x10000000;
 	while (1) {
-		current->state = TASK_INTERRUPTIBLE;
+		set_current_state(TASK_INTERRUPTIBLE);
 		schedule();
 		if (do_signal(&saveset, regs))
 			return regs->gpr[3];
diff --exclude=SCCS -ur linux-2.5/arch/ppc64/kernel/signal32.c for-linus-ppc64/arch/ppc64/kernel/signal32.c
--- linux-2.5/arch/ppc64/kernel/signal32.c	2003-07-17 06:09:04.000000000 +1000
+++ for-linus-ppc64/arch/ppc64/kernel/signal32.c	2003-11-12 04:07:22.381217152 +1100
@@ -133,7 +133,7 @@
 	regs->gpr[3] = EINTR;
 	regs->ccr |= 0x10000000;
 	while (1) {
-		current->state = TASK_INTERRUPTIBLE;
+		set_current_state(TASK_INTERRUPTIBLE);
 		schedule();
 		if (do_signal32(&saveset, regs))
 			/*
@@ -806,7 +806,7 @@
 	regs->gpr[3] = EINTR;
 	regs->ccr |= 0x10000000;
 	while (1) {
-		current->state = TASK_INTERRUPTIBLE;
+		set_current_state(TASK_INTERRUPTIBLE);
 		schedule();
 		if (do_signal32(&saveset, regs))
 			/*

** Sent via the linuxppc64-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc64-dev mailing list