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 336713ab4745..75c602dc874f 100644 --- a/arch/frv/kernel/signal.c +++ b/arch/frv/kernel/signal.c | |||
@@ -174,7 +174,7 @@ 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 | set_fs(USER_DS); | 179 | set_fs(USER_DS); |
180 | 180 | ||
@@ -183,13 +183,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set) | |||
183 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) | 183 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
184 | return -EFAULT; | 184 | return -EFAULT; |
185 | 185 | ||
186 | rsig = sig; | 186 | if (__put_user(sig, &frame->sig) < 0) |
187 | if (sig < 32 && | ||
188 | __current_thread_info->exec_domain && | ||
189 | __current_thread_info->exec_domain->signal_invmap) | ||
190 | rsig = __current_thread_info->exec_domain->signal_invmap[sig]; | ||
191 | |||
192 | if (__put_user(rsig, &frame->sig) < 0) | ||
193 | return -EFAULT; | 187 | return -EFAULT; |
194 | 188 | ||
195 | if (setup_sigcontext(&frame->sc, set->sig[0])) | 189 | if (setup_sigcontext(&frame->sc, set->sig[0])) |
@@ -255,7 +249,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set) | |||
255 | static int setup_rt_frame(struct ksignal *ksig, sigset_t *set) | 249 | static int setup_rt_frame(struct ksignal *ksig, sigset_t *set) |
256 | { | 250 | { |
257 | struct rt_sigframe __user *frame; | 251 | struct rt_sigframe __user *frame; |
258 | int rsig, sig = ksig->sig; | 252 | int sig = ksig->sig; |
259 | 253 | ||
260 | set_fs(USER_DS); | 254 | set_fs(USER_DS); |
261 | 255 | ||
@@ -264,13 +258,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set) | |||
264 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) | 258 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
265 | return -EFAULT; | 259 | return -EFAULT; |
266 | 260 | ||
267 | rsig = sig; | 261 | if (__put_user(sig, &frame->sig) || |
268 | if (sig < 32 && | ||
269 | __current_thread_info->exec_domain && | ||
270 | __current_thread_info->exec_domain->signal_invmap) | ||
271 | rsig = __current_thread_info->exec_domain->signal_invmap[sig]; | ||
272 | |||
273 | if (__put_user(rsig, &frame->sig) || | ||
274 | __put_user(&frame->info, &frame->pinfo) || | 262 | __put_user(&frame->info, &frame->pinfo) || |
275 | __put_user(&frame->uc, &frame->puc)) | 263 | __put_user(&frame->uc, &frame->puc)) |
276 | return -EFAULT; | 264 | return -EFAULT; |