aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2020-08-25 00:43:33 +0100
committerBen Hutchings <ben@decadent.org.uk>2020-08-27 15:00:33 +0100
commitccc5c14c44f3fa76f61b8aae947cf3b853a6c833 (patch)
tree5fd58faa4a10ca2b4ca9a7041153e287dd1351b9
parentb0c39f5ac8913b841037f8a90d83e55402c0ac25 (diff)
downloadklibc-ccc5c14c44f3fa76f61b8aae947cf3b853a6c833.tar.gz
[klibc] signal: Note another reason to define _KLIBC_NEEDS_SA_RESTORER
On some architectures we should set SA_RESTORER to avoid the need for a signal trampoline and executable stack. Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--usr/include/klibc/sysconfig.h3
-rw-r--r--usr/klibc/sigaction.c2
2 files changed, 2 insertions, 3 deletions
diff --git a/usr/include/klibc/sysconfig.h b/usr/include/klibc/sysconfig.h
index c91d5b85a31059..4e38b1fd1e1ddd 100644
--- a/usr/include/klibc/sysconfig.h
+++ b/usr/include/klibc/sysconfig.h
@@ -154,7 +154,8 @@
*
* Some architectures, like x86-64 and some i386 Fedora kernels,
* do not provide a default sigreturn, and therefore must have
- * SA_RESTORER set.
+ * SA_RESTORER set. On others, the default sigreturn requires an
+ * executable stack, which we should avoid.
*/
#ifndef _KLIBC_NEEDS_SA_RESTORER
# define _KLIBC_NEEDS_SA_RESTORER 0
diff --git a/usr/klibc/sigaction.c b/usr/klibc/sigaction.c
index 30ef39efab5215..966bc1c6f6c3a8 100644
--- a/usr/klibc/sigaction.c
+++ b/usr/klibc/sigaction.c
@@ -31,8 +31,6 @@ int sigaction(int sig, const struct sigaction *act, struct sigaction *oact)
sa = *act;
act = &sa;
- /* The kernel can't be trusted to have a valid default
- restorer */
sa.sa_flags |= SA_RESTORER;
sa.sa_restorer = &__sigreturn;
}