diff options
Diffstat (limited to 'arch/frv/kernel/signal.c')
-rw-r--r-- | arch/frv/kernel/signal.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c index 85ca6727ca07..82d5e914dc15 100644 --- a/arch/frv/kernel/signal.c +++ b/arch/frv/kernel/signal.c | |||
@@ -174,20 +174,14 @@ static inline void __user *get_sigframe(struct ksignal *ksig, | |||
174 | static int setup_frame(struct ksignal *ksig, sigset_t *set) | 174 | static int setup_frame(struct ksignal *ksig, sigset_t *set) |
175 | { | 175 | { |
176 | struct sigframe __user *frame; | 176 | struct sigframe __user *frame; |
177 | int rsig, sig = ksig->sig; | 177 | int sig = ksig->sig; |
178 | 178 | ||
179 | frame = get_sigframe(ksig, sizeof(*frame)); | 179 | frame = get_sigframe(ksig, sizeof(*frame)); |
180 | 180 | ||
181 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) | 181 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
182 | return -EFAULT; | 182 | return -EFAULT; |
183 | 183 | ||
184 | rsig = sig; | 184 | if (__put_user(sig, &frame->sig) < 0) |
185 | if (sig < 32 && | ||
186 | __current_thread_info->exec_domain && | ||
187 | __current_thread_info->exec_domain->signal_invmap) | ||
188 | rsig = __current_thread_info->exec_domain->signal_invmap[sig]; | ||
189 | |||
190 | if (__put_user(rsig, &frame->sig) < 0) | ||
191 | return -EFAULT; | 185 | return -EFAULT; |
192 | 186 | ||
193 | if (setup_sigcontext(&frame->sc, set->sig[0])) | 187 | if (setup_sigcontext(&frame->sc, set->sig[0])) |
@@ -253,20 +247,14 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set) | |||
253 | static int setup_rt_frame(struct ksignal *ksig, sigset_t *set) | 247 | static int setup_rt_frame(struct ksignal *ksig, sigset_t *set) |
254 | { | 248 | { |
255 | struct rt_sigframe __user *frame; | 249 | struct rt_sigframe __user *frame; |
256 | int rsig, sig = ksig->sig; | 250 | int sig = ksig->sig; |
257 | 251 | ||
258 | frame = get_sigframe(ksig, sizeof(*frame)); | 252 | frame = get_sigframe(ksig, sizeof(*frame)); |
259 | 253 | ||
260 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) | 254 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
261 | return -EFAULT; | 255 | return -EFAULT; |
262 | 256 | ||
263 | rsig = sig; | 257 | if (__put_user(sig, &frame->sig) || |
264 | if (sig < 32 && | ||
265 | __current_thread_info->exec_domain && | ||
266 | __current_thread_info->exec_domain->signal_invmap) | ||
267 | rsig = __current_thread_info->exec_domain->signal_invmap[sig]; | ||
268 | |||
269 | if (__put_user(rsig, &frame->sig) || | ||
270 | __put_user(&frame->info, &frame->pinfo) || | 258 | __put_user(&frame->info, &frame->pinfo) || |
271 | __put_user(&frame->uc, &frame->puc)) | 259 | __put_user(&frame->uc, &frame->puc)) |
272 | return -EFAULT; | 260 | return -EFAULT; |