Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9e2d59ad authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull signal handling cleanups from Al Viro:
 "This is the first pile; another one will come a bit later and will
  contain SYSCALL_DEFINE-related patches.

   - a bunch of signal-related syscalls (both native and compat)
     unified.

   - a bunch of compat syscalls switched to COMPAT_SYSCALL_DEFINE
     (fixing several potential problems with missing argument
     validation, while we are at it)

   - a lot of now-pointless wrappers killed

   - a couple of architectures (cris and hexagon) forgot to save
     altstack settings into sigframe, even though they used the
     (uninitialized) values in sigreturn; fixed.

   - microblaze fixes for delivery of multiple signals arriving at once

   - saner set of helpers for signal delivery introduced, several
     architectures switched to using those."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (143 commits)
  x86: convert to ksignal
  sparc: convert to ksignal
  arm: switch to struct ksignal * passing
  alpha: pass k_sigaction and siginfo_t using ksignal pointer
  burying unused conditionals
  make do_sigaltstack() static
  arm64: switch to generic old sigaction() (compat-only)
  arm64: switch to generic compat rt_sigaction()
  arm64: switch compat to generic old sigsuspend
  arm64: switch to generic compat rt_sigqueueinfo()
  arm64: switch to generic compat rt_sigpending()
  arm64: switch to generic compat rt_sigprocmask()
  arm64: switch to generic sigaltstack
  sparc: switch to generic old sigsuspend
  sparc: COMPAT_SYSCALL_DEFINE does all sign-extension as well as SYSCALL_DEFINE
  sparc: kill sign-extending wrappers for native syscalls
  kill sparc32_open()
  sparc: switch to use of generic old sigaction
  sparc: switch sys_compat_rt_sigaction() to COMPAT_SYSCALL_DEFINE
  mips: switch to generic sys_fork() and sys_clone()
  ...
parents 5ce1a70e 235b8022
Loading
Loading
Loading
Loading
+26 −3
Original line number Diff line number Diff line
@@ -368,9 +368,6 @@ config MODULES_USE_ELF_REL
	  Modules only use ELF REL relocations.  Modules with ELF RELA
	  relocations will give an error.

config GENERIC_SIGALTSTACK
	bool

#
# ABI hall of shame
#
@@ -385,4 +382,30 @@ config CLONE_BACKWARDS2
	help
	  Architecture has the first two arguments of clone(2) swapped.

config ODD_RT_SIGACTION
	bool
	help
	  Architecture has unusual rt_sigaction(2) arguments

config OLD_SIGSUSPEND
	bool
	help
	  Architecture has old sigsuspend(2) syscall, of one-argument variety

config OLD_SIGSUSPEND3
	bool
	help
	  Even weirder antique ABI - three-argument sigsuspend(2)

config OLD_SIGACTION
	bool
	help
	  Architecture has old sigaction(2) syscall.  Nope, not the same
	  as OLD_SIGSUSPEND | OLD_SIGSUSPEND3 - alpha has sigsuspend(2),
	  but fairly different variant of sigaction(2), thanks to OSF/1
	  compatibility...

config COMPAT_OLD_SIGACTION
	bool

source "kernel/gcov/Kconfig"
+2 −1
Original line number Diff line number Diff line
@@ -21,7 +21,8 @@ config ALPHA
	select GENERIC_STRNLEN_USER
	select HAVE_MOD_ARCH_SPECIFIC
	select MODULES_USE_ELF_RELA
	select GENERIC_SIGALTSTACK
	select ODD_RT_SIGACTION
	select OLD_SIGSUSPEND
	help
	  The Alpha is a 64-bit general-purpose processor designed and
	  marketed by the Digital Equipment Corporation of blessed memory,
+1 −10
Original line number Diff line number Diff line
@@ -22,15 +22,6 @@ struct osf_sigaction {
	int		sa_flags;
};

struct sigaction {
	__sighandler_t	sa_handler;
	unsigned long	sa_flags;
	sigset_t	sa_mask;	/* mask last for extensibility */
};

struct k_sigaction {
	struct sigaction sa;
	__sigrestore_t ka_restorer;
};
#define __ARCH_HAS_KA_RESTORER
#include <asm/sigcontext.h>
#endif
+0 −1
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@
#define __ARCH_WANT_SYS_OLD_GETRLIMIT
#define __ARCH_WANT_SYS_OLDUMOUNT
#define __ARCH_WANT_SYS_SIGPENDING
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
#define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_VFORK
#define __ARCH_WANT_SYS_CLONE
+0 −1
Original line number Diff line number Diff line
@@ -250,7 +250,6 @@ copy_thread(unsigned long clone_flags, unsigned long usp,
	struct pt_regs *childregs = task_pt_regs(p);
	struct pt_regs *regs = current_pt_regs();
	struct switch_stack *childstack, *stack;
	unsigned long settls;

	childstack = ((struct switch_stack *) childregs) - 1;
	childti->pcb.ksp = (unsigned long) childstack;
Loading