]> git.baikalelectronics.ru Git - kernel.git/commit
arch/tile: correct double syscall restart for nested signals
authorChris Metcalf <cmetcalf@tilera.com>
Thu, 28 Oct 2010 19:03:30 +0000 (15:03 -0400)
committerChris Metcalf <cmetcalf@tilera.com>
Mon, 1 Nov 2010 19:31:04 +0000 (15:31 -0400)
commit14f453c8e362a1bf36a49e9537aa07a1f80034a3
treebbfc0dcd4376f6f6337cc199fa785f53243b36cb
parentc34c94e4899a007053f4bcbd871efd69861b398c
arch/tile: correct double syscall restart for nested signals

This change is modelled on similar fixes for other architectures.
The pt_regs "faultnum" member is set to the trap (fault) number that
caused us to enter the kernel, and is INT_SWINT_1 for the syscall software
interrupt.  We already supported a pseudo value, INT_SWINT_1_SIGRETURN,
that we used for the rt_sigreturn syscall; it avoided the case where
one signal was handled, then we "tail-called" to another handler.

This change avoids the similar case where we start to call one handler,
then are preempted into another handler when we start trying to run
the first handler.  We clear ->faultnum after calling handle_signal(),
and to be paranoid also in the case where there was no signal to deliver.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
arch/tile/kernel/signal.c