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 Original line Diff line number Diff line
@@ -368,9 +368,6 @@ config MODULES_USE_ELF_REL
	  Modules only use ELF REL relocations.  Modules with ELF RELA
	  Modules only use ELF REL relocations.  Modules with ELF RELA
	  relocations will give an error.
	  relocations will give an error.


config GENERIC_SIGALTSTACK
	bool

#
#
# ABI hall of shame
# ABI hall of shame
#
#
@@ -385,4 +382,30 @@ config CLONE_BACKWARDS2
	help
	help
	  Architecture has the first two arguments of clone(2) swapped.
	  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"
source "kernel/gcov/Kconfig"
+2 −1
Original line number Original line Diff line number Diff line
@@ -21,7 +21,8 @@ config ALPHA
	select GENERIC_STRNLEN_USER
	select GENERIC_STRNLEN_USER
	select HAVE_MOD_ARCH_SPECIFIC
	select HAVE_MOD_ARCH_SPECIFIC
	select MODULES_USE_ELF_RELA
	select MODULES_USE_ELF_RELA
	select GENERIC_SIGALTSTACK
	select ODD_RT_SIGACTION
	select OLD_SIGSUSPEND
	help
	help
	  The Alpha is a 64-bit general-purpose processor designed and
	  The Alpha is a 64-bit general-purpose processor designed and
	  marketed by the Digital Equipment Corporation of blessed memory,
	  marketed by the Digital Equipment Corporation of blessed memory,
+1 −10
Original line number Original line Diff line number Diff line
@@ -22,15 +22,6 @@ struct osf_sigaction {
	int		sa_flags;
	int		sa_flags;
};
};


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


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