[git pull] signal.git

From: Al Viro
Date: Wed Feb 20 2013 - 17:52:22 EST


* 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.

That's the first pile; another one will come a bit later and will contain
SYSCALL_DEFINE-related patches. Please, pull from
git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal for-linus

Shortlog:
Al Viro (140):
switch compat_sys_[gs]etitimer(2) to COMPAT_SYSCALL_DEFINE
sanitize rt_sigaction() situation a bit
consolidate rt_sigsuspend()
generic compat_sys_rt_sigprocmask()
generic compat_sys_rt_sigpending()
generic compat_sys_rt_sigqueueinfo()
old sigsuspend variants in kernel/signal.c
switch compat_sys_rt_sigtimedwait to COMPAT_SYSCALL_DEFINE
switch compat_sys_sigprocmask to COMPAT_SYSCALL_DEFINE
switch rt_tgsigqueueinfo to COMPAT_SYSCALL_DEFINE
switch compat_sys_sched_rr_get_interval to COMPAT_SYSCALL_DEFINE
consolidate declarations of k_sigaction
consolidate kernel-side struct sigaction declarations
generic sys_compat_rt_sigaction()
generic sys_sigaction() and compat_sys_sigaction()
switch compat_sys_open* to COMPAT_SYSCALL_DEFINE
convert futex compat syscalls to COMPAT_SYSCALL_DEFINE
switch timerfd compat syscalls to COMPAT_SYSCALL_DEFINE
new helper: get_signal()
new helper: signal_setup_done()
new helper: sigsp()
mips: use sane prototype for sys_rt_sigsuspend()
take sys_rt_sigsuspend() prototype to linux/syscalls.h
alpha: remove stray debris left in copy_process()
arm: switch to generic sigaltstack
alpha: switch to generic old sigsuspend
arm: switch to generic old sigsuspend
arm: switch to generic old sigaction()
avr32: switch to generic sigaltstack
blackfin: switch to generic sigaltstack
cris: switch to generic sigaltstack
c6x: switch to generic sigaltstack
cris: don't leave ->uc_stack unitialized - we'll use its contents on sigreturn
cris: switch to generic old sigsuspend
cris: switch to generic old sigaction()
frv: switch to generic sigaltstack
cris: kill weird arguments of sys_{rt_,}sigreturn()
frv: switch to generic old sigsuspend
frv: switch to generic old sigaction()
h8300: switch to generic sigaltstack
h8300: kill useless wrappers, fix rt_sigreturn(2)
h8300: switch to generic old sigsuspend
hexagon: switch to generic sigaltstack
h8300: switch to generic old sigaction()
ia64: switch to generic sigaltstack
hexagon: don't leave ->uc_stack uninitialized
m32r: switch to generic sigaltstack
m68k: switch to generic sigaltstack
m68k: switch to generic old sigsuspend
m68k: switch to generic old sigaction()
microblaze: switch to generic sigaltstack
microblaze: evict the check for kernel_mode(regs) from do_notify_resume()
microblaze: fix the horror with restarts of sigreturn()
microblaze: fix handling of multiple pending signals
mn10300: switch to generic sigaltstack
microblaze: remove debris in ptrace.c
mn10300: switch to generic old sigsuspend
mn10300: switch to generic old sigaction()
parisc: switch to generic sigaltstack
openrisc: switch to generic sigaltstack
parisc: switch to generic compat rt_sigprocmask()
parisc: switch to generic compat rt_sigpending()
parisc: switch to generic compat rt_sigqueueinfo()
parisc: switch to generic compat sched_rr_get_interval()
parisc: switch to generic compat rt_sigaction()
powerpc: switch to generic sigaltstack
powerpc: switch to generic compat rt_sigprocmask()
powerpc: switch to generic compat rt_sigpending()
powerpc: switch to generic compat rt_sigqueueinfo()
powerpc: switch to generic old sigsuspend
powerpc: kill pointless wrappers
powerpc: switch to generic compat rt_sigaction()
powerpc: switch to generic old sigaction()
s390: switch to generic sigaltstack
powerpc: trim the crap from syscalls.h
s390: switch to generic compat rt_sigprocmask(2)
s390: switch to generic compat rt_sigpending()
s390: switch to generic compat rt_sigqueueinfo()
s390: switch to generic old sigsuspend
s390: switch to generic compat sched_rr_get_interval()
s390: switch to generic compat rt_sigaction
s390: switch to generic old sigaction()
s390: kill useless wrappers
sh: switch to generic sigaltstack
score: switch to generic sigaltstack
sh: switch to generic old sigsuspend()
sh: switch to generic old sigaction()
sparc: switch to generic sigaltstack
sparc: bury the sys_sigpause() remains
sparc: switch to generic compat rt_sigprocmask(2)
sparc: switch to generic compat rt_sigpending()
sparc: switch to generic compat rt_sigqueueinfo()
tile: switch to generic sigaltstack
tile: switch to generic compat rt_sig{procmask,pending}()
tile: switch to generic compat rt_sigqueueinfo()
tile: switch to generic compat rt_sigaction()
amd64: get rid of useless RESTORE_TOP_OF_STACK in stub_execve()
unicore32: switch to generic sigaltstack
x86: get rid of pt_regs argument of iopl(2)
x86: get rid of pt_regs argument in sigreturn variants
x86: get rid of pt_regs argument in vm86/vm86old
x86: switch to generic compat rt_sigpending()
x86: switch to generic compat rt_sigqueueinfo()
x86,um: switch to generic old sigsuspend()
x86: switch to generic compat sched_rr_get_interval()
x86: switch to generic compat rt_sigaction()
xtensa: switch to generic sigaltstack
x86: switch to generic old sigaction
mips: switch to generic sigaltstack
mips: switch to compat_sys_waitid()
switch mips to generic rt_sigsuspend(), make it unconditional
mips: switch to generic compat rt_sigprocmask()
mips: switch to generic compat rt_sigpending()
mips: switch to generic compat rt_sigqueueinfo()
mips: sigsuspend() is essentially the same as rt_sigsuspend() here
mips: switch to generic compat sched_rr_get_interval()
mips: switch to generic compat rt_sigaction()
mips: don't bother with compat_sys_futex() wrappers
mips: no magic arguments for sysm_pipe()
mips: take the "zero newsp means inherit the parent's one" to copy_thread()
mips: switch to generic sys_fork() and sys_clone()
sparc: switch sys_compat_rt_sigaction() to COMPAT_SYSCALL_DEFINE
sparc: switch to use of generic old sigaction
kill sparc32_open()
sparc: kill sign-extending wrappers for native syscalls
sparc: COMPAT_SYSCALL_DEFINE does all sign-extension as well as SYSCALL_DEFINE
sparc: switch to generic old sigsuspend
arm64: switch to generic sigaltstack
arm64: switch to generic compat rt_sigprocmask()
arm64: switch to generic compat rt_sigpending()
arm64: switch to generic compat rt_sigqueueinfo()
arm64: switch compat to generic old sigsuspend
arm64: switch to generic compat rt_sigaction()
arm64: switch to generic old sigaction() (compat-only)
make do_sigaltstack() static
burying unused conditionals
alpha: pass k_sigaction and siginfo_t using ksignal pointer
arm: switch to struct ksignal * passing
sparc: convert to ksignal
x86: convert to ksignal

Michal Simek (1):
microblaze: Move restart allowed out of block

Ralf Baechle (2):
MIPS: sysmips: Use unreachable().
MIPS: sysmips: Rewrite to use SYSCALL_DEFINE3().

Diffstat:
arch/Kconfig | 29 +++-
arch/alpha/Kconfig | 3 +-
arch/alpha/include/asm/signal.h | 11 +-
arch/alpha/include/asm/unistd.h | 1 -
arch/alpha/kernel/process.c | 1 -
arch/alpha/kernel/signal.c | 121 ++++-------
arch/arm/Kconfig | 2 +
arch/arm/include/asm/signal.h | 18 +--
arch/arm/include/asm/unistd.h | 2 -
arch/arm/kernel/calls.S | 2 +-
arch/arm/kernel/entry-common.S | 5 -
arch/arm/kernel/signal.c | 160 +++++----------
arch/arm64/Kconfig | 2 +
arch/arm64/include/asm/syscalls.h | 2 -
arch/arm64/include/asm/unistd.h | 2 -
arch/arm64/include/asm/unistd32.h | 4 +-
arch/arm64/kernel/entry.S | 5 -
arch/arm64/kernel/signal.c | 17 +--
arch/arm64/kernel/signal32.c | 220 +--------------------
arch/arm64/kernel/sys.c | 1 -
arch/arm64/kernel/sys32.S | 5 -
arch/avr32/include/asm/signal.h | 11 +-
arch/avr32/include/asm/unistd.h | 2 -
arch/avr32/kernel/signal.c | 15 +--
arch/avr32/kernel/syscall-stubs.S | 6 -
arch/avr32/kernel/syscall_table.S | 2 +-
arch/blackfin/include/asm/unistd.h | 2 -
arch/blackfin/kernel/signal.c | 12 +-
arch/c6x/kernel/entry.S | 12 -
arch/cris/Kconfig | 2 +
arch/cris/arch-v10/kernel/signal.c | 65 +------
arch/cris/arch-v32/kernel/signal.c | 68 +------
arch/cris/include/asm/signal.h | 19 +--
arch/cris/include/asm/unistd.h | 2 -
arch/frv/Kconfig | 2 +
arch/frv/include/asm/signal.h | 7 -
arch/frv/include/asm/unistd.h | 2 -
arch/frv/kernel/signal.c | 55 +-----
arch/h8300/Kconfig | 2 +
arch/h8300/include/asm/signal.h | 18 +--
arch/h8300/include/asm/unistd.h | 2 -
arch/h8300/kernel/signal.c | 72 +------
arch/h8300/kernel/syscalls.S | 15 --
arch/hexagon/kernel/signal.c | 16 +--
arch/ia64/include/asm/signal.h | 10 -
arch/ia64/include/asm/unistd.h | 8 -
arch/ia64/kernel/signal.c | 19 +--
arch/m32r/include/asm/signal.h | 11 +-
arch/m32r/include/asm/unistd.h | 2 -
arch/m32r/kernel/signal.c | 16 +--
arch/m68k/Kconfig | 2 +
arch/m68k/include/asm/signal.h | 19 +--
arch/m68k/include/asm/unistd.h | 2 -
arch/m68k/kernel/signal.c | 59 +-----
arch/microblaze/include/asm/unistd.h | 2 -
arch/microblaze/kernel/entry-nommu.S | 21 ++-
arch/microblaze/kernel/entry.S | 62 +++---
arch/microblaze/kernel/ptrace.c | 23 --
arch/microblaze/kernel/signal.c | 26 +---
arch/mips/Kconfig | 1 +
arch/mips/include/asm/compat.h | 8 +
arch/mips/include/asm/signal.h | 2 +
arch/mips/include/asm/sim.h | 24 +-
arch/mips/include/asm/unistd.h | 3 +-
arch/mips/include/uapi/asm/signal.h | 6 +-
arch/mips/kernel/linux32.c | 44 ----
arch/mips/kernel/process.c | 3 +-
arch/mips/kernel/scall32-o32.S | 4 +-
arch/mips/kernel/scall64-64.S | 4 +-
arch/mips/kernel/scall64-n32.S | 20 +-
arch/mips/kernel/scall64-o32.S | 22 +-
arch/mips/kernel/signal.c | 48 +----
arch/mips/kernel/signal32.c | 237 +---------------------
arch/mips/kernel/signal_n32.c | 59 +-----
arch/mips/kernel/syscall.c | 73 +------
arch/mn10300/Kconfig | 2 +
arch/mn10300/include/asm/signal.h | 19 +--
arch/mn10300/include/asm/unistd.h | 2 -
arch/mn10300/kernel/signal.c | 60 +------
arch/openrisc/kernel/entry.S | 4 -
arch/openrisc/kernel/signal.c | 15 +--
arch/parisc/include/asm/signal.h | 6 +-
arch/parisc/include/asm/unistd.h | 3 -
arch/parisc/kernel/entry.S | 38 ----
arch/parisc/kernel/signal.c | 19 +--
arch/parisc/kernel/signal32.c | 142 -------------
arch/parisc/kernel/signal32.h | 23 --
arch/parisc/kernel/sys32.h | 12 -
arch/parisc/kernel/sys_parisc32.c | 12 -
arch/parisc/kernel/syscall_table.S | 10 +-
arch/powerpc/Kconfig | 3 +
arch/powerpc/include/asm/signal.h | 1 +
arch/powerpc/include/asm/syscalls.h | 15 --
arch/powerpc/include/asm/systbl.h | 63 +++---
arch/powerpc/include/asm/unistd.h | 4 -
arch/powerpc/include/uapi/asm/signal.h | 6 +-
arch/powerpc/kernel/ppc32.h | 26 +---
arch/powerpc/kernel/signal.c | 7 -
arch/powerpc/kernel/signal_32.c | 253 +-----------------------
arch/powerpc/kernel/signal_64.c | 11 +-
arch/powerpc/kernel/sys_ppc32.c | 301 ----------------------------
arch/s390/Kconfig | 3 +
arch/s390/include/asm/signal.h | 19 +--
arch/s390/include/asm/unistd.h | 3 -
arch/s390/kernel/compat_linux.c | 80 --------
arch/s390/kernel/compat_linux.h | 34 +---
arch/s390/kernel/compat_signal.c | 134 +------------
arch/s390/kernel/compat_wrapper.S | 144 -------------
arch/s390/kernel/entry.h | 4 -
arch/s390/kernel/signal.c | 56 +-----
arch/s390/kernel/syscalls.S | 46 ++--
arch/score/include/asm/syscalls.h | 1 -
arch/score/kernel/entry.S | 5 -
arch/score/kernel/signal.c | 21 +--
arch/sh/Kconfig | 2 +
arch/sh/include/asm/syscalls_32.h | 6 -
arch/sh/include/asm/unistd.h | 2 -
arch/sh/include/uapi/asm/signal.h | 2 +
arch/sh/kernel/signal_32.c | 63 +------
arch/sh/kernel/signal_64.c | 62 +------
arch/sparc/Kconfig | 4 +
arch/sparc/include/asm/compat_signal.h | 6 -
arch/sparc/include/asm/signal.h | 6 +-
arch/sparc/include/asm/unistd.h | 3 -
arch/sparc/include/uapi/asm/signal.h | 2 +
arch/sparc/kernel/entry.S | 8 -
arch/sparc/kernel/signal32.c | 202 ++++++-------------
arch/sparc/kernel/signal_32.c | 175 ++++++-----------
arch/sparc/kernel/signal_64.c | 142 +++++---------
arch/sparc/kernel/sys32.S | 86 --------
arch/sparc/kernel/sys_sparc32.c | 185 +----------------
arch/sparc/kernel/sys_sparc_32.c | 48 +----
arch/sparc/kernel/syscalls.S | 6 -
arch/sparc/kernel/systbls.h | 4 +-
arch/sparc/kernel/systbls_32.S | 2 +-
arch/sparc/kernel/systbls_64.S | 84 ++++----
arch/tile/include/asm/compat.h | 8 -
arch/tile/include/asm/syscalls.h | 2 -
arch/tile/include/asm/unistd.h | 1 -
arch/tile/kernel/compat_signal.c | 112 +----------
arch/tile/kernel/signal.c | 15 +--
arch/um/kernel/signal.c | 10 -
arch/unicore32/kernel/entry.S | 5 -
arch/unicore32/kernel/signal.c | 12 +-
arch/x86/Kconfig | 4 +-
arch/x86/ia32/ia32_signal.c | 50 ++---
arch/x86/ia32/ia32entry.S | 12 +-
arch/x86/ia32/sys_ia32.c | 171 ----------------
arch/x86/include/asm/fpu-internal.h | 5 +-
arch/x86/include/asm/ia32.h | 15 --
arch/x86/include/asm/signal.h | 24 +--
arch/x86/include/asm/sys_ia32.h | 16 +--
arch/x86/include/asm/syscalls.h | 13 +-
arch/x86/include/asm/unistd.h | 2 -
arch/x86/include/uapi/asm/signal.h | 8 +-
arch/x86/kernel/entry_32.S | 45 ----
arch/x86/kernel/entry_64.S | 34 ++--
arch/x86/kernel/ioport.c | 3 +-
arch/x86/kernel/signal.c | 184 ++++++------------
arch/x86/kernel/vm86_32.c | 8 +-
arch/x86/syscalls/syscall_32.tbl | 22 +-
arch/x86/syscalls/syscall_64.tbl | 6 +-
arch/x86/um/Kconfig | 3 +-
arch/x86/um/Makefile | 4 +-
arch/x86/um/shared/sysdep/syscalls_32.h | 5 -
arch/x86/um/signal.c | 15 +--
arch/x86/um/sys_call_table_32.c | 4 -
arch/x86/um/syscalls_32.c | 38 ----
arch/xtensa/include/asm/signal.h | 11 +-
arch/xtensa/include/asm/syscall.h | 7 -
arch/xtensa/include/asm/unistd.h | 2 -
arch/xtensa/include/uapi/asm/unistd.h | 2 +-
arch/xtensa/kernel/signal.c | 18 +--
fs/compat.c | 52 +-----
fs/timerfd.c | 85 ++++++--
include/asm-generic/syscalls.h | 16 --
include/asm-generic/unistd.h | 3 -
include/linux/compat.h | 50 ++++-
include/linux/sched.h | 12 +-
include/linux/signal.h | 52 +++++-
include/linux/syscalls.h | 25 ++-
include/uapi/asm-generic/signal.h | 10 +-
include/uapi/asm-generic/unistd.h | 4 +-
kernel/compat.c | 72 +++-----
kernel/futex_compat.c | 19 +-
kernel/signal.c | 332 +++++++++++++++++++++++++++----
186 files changed, 1365 insertions(+), 4832 deletions(-)
delete mode 100644 arch/x86/um/syscalls_32.c
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/