This adds a couple of comments so that people don't get confused into making
misguided fixes, and I don't get confused into applying them.
Signed-off-by: Jeff Dike <[email protected]>
Index: 2.6.9-rc2/arch/um/kernel/signal_user.c
===================================================================
--- 2.6.9-rc2.orig/arch/um/kernel/signal_user.c 2004-09-16 22:59:06.000000000 -0400
+++ 2.6.9-rc2/arch/um/kernel/signal_user.c 2004-09-16 22:59:24.000000000 -0400
@@ -80,6 +80,12 @@
change_signals(SIG_UNBLOCK);
}
+/* These are the asynchronous signals. SIGVTALRM and SIGARLM are handled
+ * together under SIGVTALRM_BIT. SIGPROF is excluded because we want to
+ * be able to profile all of UML, not just the non-critical sections. If
+ * profiling is not thread-safe, then that is not my problem. We can disable
+ * profiling when SMP is enabled in that case.
+ */
#define SIGIO_BIT 0
#define SIGVTALRM_BIT 1
@@ -114,6 +120,11 @@
sigaddset(&mask, SIGVTALRM);
sigaddset(&mask, SIGALRM);
}
+
+ /* This is safe - sigprocmask is guaranteed to copy locally the
+ * value of new_set, do his work and then, at the end, write to
+ * old_set.
+ */
if(sigprocmask(SIG_UNBLOCK, &mask, &mask) < 0)
panic("Failed to enable signals");
ret = enable_mask(&mask);