diff options
-rw-r--r-- | arch/mips/kernel/signal32.c | 62 | ||||
-rw-r--r-- | arch/mips/kernel/signal_n32.c | 6 | ||||
-rw-r--r-- | include/asm-mips/compat-signal.h | 62 |
3 files changed, 65 insertions, 65 deletions
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index 003f8152b9ed..486b8e5f52d0 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c | |||
@@ -36,68 +36,6 @@ | |||
36 | 36 | ||
37 | #include "signal-common.h" | 37 | #include "signal-common.h" |
38 | 38 | ||
39 | #define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3) | ||
40 | |||
41 | typedef struct compat_siginfo { | ||
42 | int si_signo; | ||
43 | int si_code; | ||
44 | int si_errno; | ||
45 | |||
46 | union { | ||
47 | int _pad[SI_PAD_SIZE32]; | ||
48 | |||
49 | /* kill() */ | ||
50 | struct { | ||
51 | compat_pid_t _pid; /* sender's pid */ | ||
52 | compat_uid_t _uid; /* sender's uid */ | ||
53 | } _kill; | ||
54 | |||
55 | /* SIGCHLD */ | ||
56 | struct { | ||
57 | compat_pid_t _pid; /* which child */ | ||
58 | compat_uid_t _uid; /* sender's uid */ | ||
59 | int _status; /* exit code */ | ||
60 | compat_clock_t _utime; | ||
61 | compat_clock_t _stime; | ||
62 | } _sigchld; | ||
63 | |||
64 | /* IRIX SIGCHLD */ | ||
65 | struct { | ||
66 | compat_pid_t _pid; /* which child */ | ||
67 | compat_clock_t _utime; | ||
68 | int _status; /* exit code */ | ||
69 | compat_clock_t _stime; | ||
70 | } _irix_sigchld; | ||
71 | |||
72 | /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ | ||
73 | struct { | ||
74 | s32 _addr; /* faulting insn/memory ref. */ | ||
75 | } _sigfault; | ||
76 | |||
77 | /* SIGPOLL, SIGXFSZ (To do ...) */ | ||
78 | struct { | ||
79 | int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ | ||
80 | int _fd; | ||
81 | } _sigpoll; | ||
82 | |||
83 | /* POSIX.1b timers */ | ||
84 | struct { | ||
85 | timer_t _tid; /* timer id */ | ||
86 | int _overrun; /* overrun count */ | ||
87 | compat_sigval_t _sigval;/* same as below */ | ||
88 | int _sys_private; /* not to be passed to user */ | ||
89 | } _timer; | ||
90 | |||
91 | /* POSIX.1b signals */ | ||
92 | struct { | ||
93 | compat_pid_t _pid; /* sender's pid */ | ||
94 | compat_uid_t _uid; /* sender's uid */ | ||
95 | compat_sigval_t _sigval; | ||
96 | } _rt; | ||
97 | |||
98 | } _sifields; | ||
99 | } compat_siginfo_t; | ||
100 | |||
101 | /* | 39 | /* |
102 | * Including <asm/unistd.h> would give use the 64-bit syscall numbers ... | 40 | * Including <asm/unistd.h> would give use the 64-bit syscall numbers ... |
103 | */ | 41 | */ |
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c index 4cf9ff24d1f7..eb7e05926ebe 100644 --- a/arch/mips/kernel/signal_n32.c +++ b/arch/mips/kernel/signal_n32.c | |||
@@ -72,7 +72,7 @@ struct ucontextn32 { | |||
72 | struct rt_sigframe_n32 { | 72 | struct rt_sigframe_n32 { |
73 | u32 rs_ass[4]; /* argument save space for o32 */ | 73 | u32 rs_ass[4]; /* argument save space for o32 */ |
74 | u32 rs_code[2]; /* signal trampoline */ | 74 | u32 rs_code[2]; /* signal trampoline */ |
75 | struct siginfo rs_info; | 75 | struct compat_siginfo rs_info; |
76 | struct ucontextn32 rs_uc; | 76 | struct ucontextn32 rs_uc; |
77 | }; | 77 | }; |
78 | 78 | ||
@@ -81,7 +81,7 @@ struct rt_sigframe_n32 { | |||
81 | struct rt_sigframe_n32 { | 81 | struct rt_sigframe_n32 { |
82 | u32 rs_ass[4]; /* argument save space for o32 */ | 82 | u32 rs_ass[4]; /* argument save space for o32 */ |
83 | u32 rs_pad[2]; | 83 | u32 rs_pad[2]; |
84 | struct siginfo rs_info; | 84 | struct compat_siginfo rs_info; |
85 | struct ucontextn32 rs_uc; | 85 | struct ucontextn32 rs_uc; |
86 | u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */ | 86 | u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */ |
87 | }; | 87 | }; |
@@ -187,7 +187,7 @@ static int setup_rt_frame_n32(struct k_sigaction * ka, | |||
187 | install_sigtramp(frame->rs_code, __NR_N32_rt_sigreturn); | 187 | install_sigtramp(frame->rs_code, __NR_N32_rt_sigreturn); |
188 | 188 | ||
189 | /* Create siginfo. */ | 189 | /* Create siginfo. */ |
190 | err |= copy_siginfo_to_user(&frame->rs_info, info); | 190 | err |= copy_siginfo_to_user32(&frame->rs_info, info); |
191 | 191 | ||
192 | /* Create the ucontext. */ | 192 | /* Create the ucontext. */ |
193 | err |= __put_user(0, &frame->rs_uc.uc_flags); | 193 | err |= __put_user(0, &frame->rs_uc.uc_flags); |
diff --git a/include/asm-mips/compat-signal.h b/include/asm-mips/compat-signal.h index 6599a901b63e..368a99e5c3e1 100644 --- a/include/asm-mips/compat-signal.h +++ b/include/asm-mips/compat-signal.h | |||
@@ -10,6 +10,68 @@ | |||
10 | 10 | ||
11 | #include <asm/uaccess.h> | 11 | #include <asm/uaccess.h> |
12 | 12 | ||
13 | #define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3) | ||
14 | |||
15 | typedef struct compat_siginfo { | ||
16 | int si_signo; | ||
17 | int si_code; | ||
18 | int si_errno; | ||
19 | |||
20 | union { | ||
21 | int _pad[SI_PAD_SIZE32]; | ||
22 | |||
23 | /* kill() */ | ||
24 | struct { | ||
25 | compat_pid_t _pid; /* sender's pid */ | ||
26 | compat_uid_t _uid; /* sender's uid */ | ||
27 | } _kill; | ||
28 | |||
29 | /* SIGCHLD */ | ||
30 | struct { | ||
31 | compat_pid_t _pid; /* which child */ | ||
32 | compat_uid_t _uid; /* sender's uid */ | ||
33 | int _status; /* exit code */ | ||
34 | compat_clock_t _utime; | ||
35 | compat_clock_t _stime; | ||
36 | } _sigchld; | ||
37 | |||
38 | /* IRIX SIGCHLD */ | ||
39 | struct { | ||
40 | compat_pid_t _pid; /* which child */ | ||
41 | compat_clock_t _utime; | ||
42 | int _status; /* exit code */ | ||
43 | compat_clock_t _stime; | ||
44 | } _irix_sigchld; | ||
45 | |||
46 | /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ | ||
47 | struct { | ||
48 | s32 _addr; /* faulting insn/memory ref. */ | ||
49 | } _sigfault; | ||
50 | |||
51 | /* SIGPOLL, SIGXFSZ (To do ...) */ | ||
52 | struct { | ||
53 | int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ | ||
54 | int _fd; | ||
55 | } _sigpoll; | ||
56 | |||
57 | /* POSIX.1b timers */ | ||
58 | struct { | ||
59 | timer_t _tid; /* timer id */ | ||
60 | int _overrun; /* overrun count */ | ||
61 | compat_sigval_t _sigval;/* same as below */ | ||
62 | int _sys_private; /* not to be passed to user */ | ||
63 | } _timer; | ||
64 | |||
65 | /* POSIX.1b signals */ | ||
66 | struct { | ||
67 | compat_pid_t _pid; /* sender's pid */ | ||
68 | compat_uid_t _uid; /* sender's uid */ | ||
69 | compat_sigval_t _sigval; | ||
70 | } _rt; | ||
71 | |||
72 | } _sifields; | ||
73 | } compat_siginfo_t; | ||
74 | |||
13 | static inline int __copy_conv_sigset_to_user(compat_sigset_t __user *d, | 75 | static inline int __copy_conv_sigset_to_user(compat_sigset_t __user *d, |
14 | const sigset_t *s) | 76 | const sigset_t *s) |
15 | { | 77 | { |