2004-11-04 01:55:18

by Blaisorblade

[permalink] [raw]
Subject: [patch 11/20] uml: remove SIGPROF from change_signals


From: Paolo 'Blaisorblade' Giarrusso <[email protected]>, Jeff Dike <[email protected]>

Since local_irq_save() and local_irq_disable() should match (apart from saving
the flags), get/set_signals must match [un]block_signals, i.e. change_signals;
since get/set_signals don't enable/disable SIGPROF (and this behaviour is safe
as explained in the comment the patch adds, since the profiling code does not
interact with the kernel code), not even change_signals must toggle it.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[email protected]>
---

vanilla-linux-2.6.9-paolo/arch/um/kernel/signal_user.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletion(-)

diff -puN arch/um/kernel/signal_user.c~uml-remove-SIGPROF-change_signals arch/um/kernel/signal_user.c
--- vanilla-linux-2.6.9/arch/um/kernel/signal_user.c~uml-remove-SIGPROF-change_signals 2004-11-03 23:44:59.984441096 +0100
+++ vanilla-linux-2.6.9-paolo/arch/um/kernel/signal_user.c 2004-11-03 23:44:59.986440792 +0100
@@ -57,6 +57,10 @@ int change_sig(int signal, int on)
return(!sigismember(&old, signal));
}

+/* Both here and in set/get_signal we don't touch SIGPROF, because we must not
+ * disable profiling; it's safe because the profiling code does not interact
+ * with the kernel code at all.*/
+
static void change_signals(int type)
{
sigset_t mask;
@@ -65,7 +69,6 @@ static void change_signals(int type)
sigaddset(&mask, SIGVTALRM);
sigaddset(&mask, SIGALRM);
sigaddset(&mask, SIGIO);
- sigaddset(&mask, SIGPROF);
if(sigprocmask(type, &mask, NULL) < 0)
panic("Failed to change signal mask - errno = %d", errno);
}
_