]> git.baikalelectronics.ru Git - kernel.git/commit
[MIPS] Avoid double signal restarting.
authorRalf Baechle <ralf@linux-mips.org>
Tue, 8 Aug 2006 02:47:01 +0000 (03:47 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 27 Sep 2006 12:37:33 +0000 (13:37 +0100)
commitc423600f0251b5107ecba99a1d755016a3ac61c7
tree66eff81e11545ef5259812a1a83dd75a8d520567
parentdfcd446ed4de2b39e418dfdd72c0c38691c6a3ff
[MIPS] Avoid double signal restarting.

In entry.S resume_userspace ... jal do_notify_resume form a loop through
which the kernel will iterate as long as work is pending.  If we
iterate through this loop more than once with no signal pending for at
least one but the last iteration we will take do the syscall restarting
multiple times resulting in a syscall return prior to the the syscall
instruction in userspace.  This may happen when debugging a multithreaded
program.

Debugging and original fix by Maciej; extended to other ABIs by me.

Signed-off-by: Maciej W. Rozycki <macro@mips.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/irixsig.c
arch/mips/kernel/signal.c
arch/mips/kernel/signal32.c