Commit db277e9a authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Paul Mackerras

[POWERPC] Consolidate restore_sigmask

restore_sigmask is exactly the same on 32 and 64bit, so move it to
common code.  Also move _BLOCKABLE to signal.h to avoid defining it
multiple times.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 69d15f6b
...@@ -13,6 +13,21 @@ ...@@ -13,6 +13,21 @@
#include <linux/signal.h> #include <linux/signal.h>
#include <asm/unistd.h> #include <asm/unistd.h>
#include "signal.h"
/*
* Restore the user process's signal mask
*/
void restore_sigmask(sigset_t *set)
{
sigdelsetmask(set, ~_BLOCKABLE);
spin_lock_irq(&current->sighand->siglock);
current->blocked = *set;
recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock);
}
void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka, void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka,
int has_handler) int has_handler)
{ {
......
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
#ifndef _POWERPC_ARCH_SIGNAL_H #ifndef _POWERPC_ARCH_SIGNAL_H
#define _POWERPC_ARCH_SIGNAL_H #define _POWERPC_ARCH_SIGNAL_H
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
extern void restore_sigmask(sigset_t *set);
extern void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka, extern void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka,
int has_handler); int has_handler);
......
...@@ -55,8 +55,6 @@ ...@@ -55,8 +55,6 @@
#undef DEBUG_SIG #undef DEBUG_SIG
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
#define do_signal do_signal32 #define do_signal do_signal32
#define sys_sigsuspend compat_sys_sigsuspend #define sys_sigsuspend compat_sys_sigsuspend
...@@ -697,23 +695,6 @@ int compat_sys_sigaltstack(u32 __new, u32 __old, int r5, ...@@ -697,23 +695,6 @@ int compat_sys_sigaltstack(u32 __new, u32 __old, int r5,
} }
#endif /* CONFIG_PPC64 */ #endif /* CONFIG_PPC64 */
/*
* Restore the user process's signal mask
*/
#ifdef CONFIG_PPC64
extern void restore_sigmask(sigset_t *set);
#else /* CONFIG_PPC64 */
static void restore_sigmask(sigset_t *set)
{
sigdelsetmask(set, ~_BLOCKABLE);
spin_lock_irq(&current->sighand->siglock);
current->blocked = *set;
recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock);
}
#endif
/* /*
* Set up a signal frame for a "real-time" signal handler * Set up a signal frame for a "real-time" signal handler
* (one which gets siginfo). * (one which gets siginfo).
......
...@@ -38,8 +38,6 @@ ...@@ -38,8 +38,6 @@
#define DEBUG_SIG 0 #define DEBUG_SIG 0
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
#define GP_REGS_SIZE min(sizeof(elf_gregset_t), sizeof(struct pt_regs)) #define GP_REGS_SIZE min(sizeof(elf_gregset_t), sizeof(struct pt_regs))
#define FP_REGS_SIZE sizeof(elf_fpregset_t) #define FP_REGS_SIZE sizeof(elf_fpregset_t)
...@@ -242,19 +240,6 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp) ...@@ -242,19 +240,6 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp)
return err; return err;
} }
/*
* Restore the user process's signal mask (also used by signal32.c)
*/
void restore_sigmask(sigset_t *set)
{
sigdelsetmask(set, ~_BLOCKABLE);
spin_lock_irq(&current->sighand->siglock);
current->blocked = *set;
recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock);
}
/* /*
* Handle {get,set,swap}_context operations * Handle {get,set,swap}_context operations
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment