2005-01-10 05:55:49

by Jeff Dike

[permalink] [raw]
Subject: [PATCH 22/28] UML - Allow arches to opt out of !SA_INFO signals

x86_64 only delivers signals in the SA_INFO style, whether you ask
for it or not. This patch adds a config option which says whether
the arch is SA_INFO-only or not, and ifdefs out the sigcontext
signal delivery if so.

Signed-off-by: Jeff Dike <[email protected]>

Index: 2.6.10/arch/um/Kconfig_i386
===================================================================
--- 2.6.10.orig/arch/um/Kconfig_i386 2005-01-09 21:52:21.000000000 -0500
+++ 2.6.10/arch/um/Kconfig_i386 2005-01-09 21:53:58.000000000 -0500
@@ -14,3 +14,7 @@
Three-level pagetables will let UML have more than 4G of physical
memory. All the memory that can't be mapped directly will be treated
as high memory.
+
+config ARCH_HAS_SC_SIGNALS
+ bool
+ default y
Index: 2.6.10/arch/um/Kconfig_x86_64
===================================================================
--- 2.6.10.orig/arch/um/Kconfig_x86_64 2005-01-09 21:52:21.000000000 -0500
+++ 2.6.10/arch/um/Kconfig_x86_64 2005-01-09 21:54:17.000000000 -0500
@@ -5,3 +5,7 @@
config 3_LEVEL_PGTABLES
bool
default y
+
+config ARCH_HAS_SC_SIGNALS
+ bool
+ default n
Index: 2.6.10/arch/um/kernel/signal_kern.c
===================================================================
--- 2.6.10.orig/arch/um/kernel/signal_kern.c 2005-01-09 19:06:06.000000000 -0500
+++ 2.6.10/arch/um/kernel/signal_kern.c 2005-01-09 21:53:29.000000000 -0500
@@ -74,10 +74,12 @@
if((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags(sp) == 0))
sp = current->sas_ss_sp + current->sas_ss_size;

- if(ka->sa.sa_flags & SA_SIGINFO)
- err = setup_signal_stack_si(sp, signr, ka, regs, info, oldset);
- else
+#ifdef CONFIG_ARCH_HAS_SC_SIGNALS
+ if(!(ka->sa.sa_flags & SA_SIGINFO))
err = setup_signal_stack_sc(sp, signr, ka, regs, oldset);
+ else
+#endif
+ err = setup_signal_stack_si(sp, signr, ka, regs, info, oldset);

if(err){
spin_lock_irq(&current->sighand->siglock);