aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2009-12-15 19:47:26 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 10:20:09 -0500
commit1be53963b0519bd3681749a9bed8b83aeb005cca (patch)
tree0bc6497a8039021f781f1c902f59e6f71f772793 /kernel/signal.c
parentad09750b51150ca87531b8790a379214a974c167 (diff)
signals: check ->group_stop_count after tracehook_get_signal()
Move the call to do_signal_stop() down, after tracehook call. This makes ->group_stop_count condition visible to tracers before do_signal_stop() will participate in this group-stop. Currently the patch has no effect, tracehook_get_signal() always returns 0. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/signal.c')
-rw-r--r--kernel/signal.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index 4a9d763f8922..1814e68e4de3 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1840,11 +1840,6 @@ relock:
1840 1840
1841 for (;;) { 1841 for (;;) {
1842 struct k_sigaction *ka; 1842 struct k_sigaction *ka;
1843
1844 if (unlikely(signal->group_stop_count > 0) &&
1845 do_signal_stop(0))
1846 goto relock;
1847
1848 /* 1843 /*
1849 * Tracing can induce an artifical signal and choose sigaction. 1844 * Tracing can induce an artifical signal and choose sigaction.
1850 * The return value in @signr determines the default action, 1845 * The return value in @signr determines the default action,
@@ -1856,6 +1851,10 @@ relock:
1856 if (unlikely(signr != 0)) 1851 if (unlikely(signr != 0))
1857 ka = return_ka; 1852 ka = return_ka;
1858 else { 1853 else {
1854 if (unlikely(signal->group_stop_count > 0) &&
1855 do_signal_stop(0))
1856 goto relock;
1857
1859 signr = dequeue_signal(current, &current->blocked, 1858 signr = dequeue_signal(current, &current->blocked,
1860 info); 1859 info);
1861 1860