mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-01 16:44:26 +00:00
Fix breakage in MIPS siginfo handling
MIPS's siginfo handling has been broken since this commit: commit 574c4866e33d648520a8bd5bf6f573ea6e554e88 Author: Al Viro <viro@zeniv.linux.org.uk> Date: Sun Nov 25 22:24:19 2012 -0500 consolidate kernel-side struct sigaction declarations for 64-bit BE MIPS CPUs. The UAPI variant looks like this: struct sigaction { unsigned int sa_flags; __sighandler_t sa_handler; sigset_t sa_mask; }; but the core kernel's variant looks like this: struct sigaction { #ifndef __ARCH_HAS_ODD_SIGACTION __sighandler_t sa_handler; unsigned long sa_flags; #else unsigned long sa_flags; __sighandler_t sa_handler; #endif #ifdef __ARCH_HAS_SA_RESTORER __sigrestore_t sa_restorer; #endif sigset_t sa_mask; }; The problem is that sa_flags has been changed from an unsigned int to an unsigned long. Fix this by making sa_flags unsigned int if __ARCH_HAS_ODD_SIGACTION is defined. Whilst we're at it, rename __ARCH_HAS_ODD_SIGACTION to __ARCH_HAS_IRIX_SIGACTION. Signed-off-by: David Howells <dhowells@redhat.com> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org Acked-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
1762c5ab7c
commit
2a1486981c
@ -21,6 +21,6 @@
|
||||
#include <asm/sigcontext.h>
|
||||
#include <asm/siginfo.h>
|
||||
|
||||
#define __ARCH_HAS_ODD_SIGACTION
|
||||
#define __ARCH_HAS_IRIX_SIGACTION
|
||||
|
||||
#endif /* _ASM_SIGNAL_H */
|
||||
|
@ -141,11 +141,11 @@ typedef struct {
|
||||
} compat_sigset_t;
|
||||
|
||||
struct compat_sigaction {
|
||||
#ifndef __ARCH_HAS_ODD_SIGACTION
|
||||
#ifndef __ARCH_HAS_IRIX_SIGACTION
|
||||
compat_uptr_t sa_handler;
|
||||
compat_ulong_t sa_flags;
|
||||
#else
|
||||
compat_ulong_t sa_flags;
|
||||
compat_uint_t sa_flags;
|
||||
compat_uptr_t sa_handler;
|
||||
#endif
|
||||
#ifdef __ARCH_HAS_SA_RESTORER
|
||||
|
@ -250,11 +250,11 @@ extern int show_unhandled_signals;
|
||||
extern int sigsuspend(sigset_t *);
|
||||
|
||||
struct sigaction {
|
||||
#ifndef __ARCH_HAS_ODD_SIGACTION
|
||||
#ifndef __ARCH_HAS_IRIX_SIGACTION
|
||||
__sighandler_t sa_handler;
|
||||
unsigned long sa_flags;
|
||||
#else
|
||||
unsigned long sa_flags;
|
||||
unsigned int sa_flags;
|
||||
__sighandler_t sa_handler;
|
||||
#endif
|
||||
#ifdef __ARCH_HAS_SA_RESTORER
|
||||
|
Loading…
x
Reference in New Issue
Block a user