Hi Andi,
In linux-2.6.0-test10, I believe that there are several lines of code
in the x86_64 version of handle_signal() that will not ever be executed
and can most likely be removed.
I also believe that there are several lines that should be added to the
end of the do_signal() routine for handling the -ERESTART_RESTARTBLOCK
case.
Thank you.
diff -ru linux-2.6.0-test10/arch/x86_64/kernel/signal.c
linux/arch/x86_64/kernel/signal.c
--- linux-2.6.0-test10/arch/x86_64/kernel/signal.c 2003-11-23
20:32:33.000000000 -0500
+++ linux/arch/x86_64/kernel/signal.c 2003-11-24 11:30:18.000000000 -0500
@@ -371,10 +371,6 @@
regs->rax = regs->orig_rax;
regs->rip -= 2;
}
- if (regs->rax == (unsigned long)-ERESTART_RESTARTBLOCK){
- regs->rax = __NR_restart_syscall;
- regs->rip -= 2;
- }
}
#ifdef CONFIG_IA32_EMULATION
@@ -453,6 +449,10 @@
regs->rax = regs->orig_rax;
regs->rip -= 2;
}
+ else if (res == -ERESTART_RESTARTBLOCK) {
+ regs->rax = __NR_restart_syscall;
+ regs->rip -= 2;
+ }
}
return 0;
}
On Mon, Nov 24, 2003 at 03:52:08PM -0500, John Blackwood wrote:
> Hi Andi,
>
> In linux-2.6.0-test10, I believe that there are several lines of code
> in the x86_64 version of handle_signal() that will not ever be executed
> and can most likely be removed.
>
> I also believe that there are several lines that should be added to the
> end of the do_signal() routine for handling the -ERESTART_RESTARTBLOCK
> case.
Thanks, John. Was a mismerge. I added the change to my tree.
-Andi