aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/signal32.c
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@suse.cz>2006-03-22 05:02:08 -0500
committerJaroslav Kysela <perex@suse.cz>2006-03-22 05:02:08 -0500
commit5501972e0b5857bc8354770d900ceb9b40c7f6b7 (patch)
treeff239422827c4cd54d2998f8851304255de31b38 /arch/mips/kernel/signal32.c
parent9d2f928ddf64ca0361562e30faf584cd33055c60 (diff)
parente952f31bce6e9f64db01f607abc46529ba57ac9e (diff)
Merge with rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Diffstat (limited to 'arch/mips/kernel/signal32.c')
-rw-r--r--arch/mips/kernel/signal32.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
index 237cd8a2cd32..f32a22997c3d 100644
--- a/arch/mips/kernel/signal32.c
+++ b/arch/mips/kernel/signal32.c
@@ -163,7 +163,7 @@ static inline int put_sigset(const sigset_t *kbuf, compat_sigset_t __user *ubuf)
163 return err; 163 return err;
164} 164}
165 165
166static inline int get_sigset(sigset_t *kbuf, const compat_sigset_t *ubuf) 166static inline int get_sigset(sigset_t *kbuf, const compat_sigset_t __user *ubuf)
167{ 167{
168 int err = 0; 168 int err = 0;
169 unsigned long sig[4]; 169 unsigned long sig[4];
@@ -195,10 +195,10 @@ save_static_function(sys32_sigsuspend);
195__attribute_used__ noinline static int 195__attribute_used__ noinline static int
196_sys32_sigsuspend(nabi_no_regargs struct pt_regs regs) 196_sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
197{ 197{
198 compat_sigset_t *uset; 198 compat_sigset_t __user *uset;
199 sigset_t newset; 199 sigset_t newset;
200 200
201 uset = (compat_sigset_t *) regs.regs[4]; 201 uset = (compat_sigset_t __user *) regs.regs[4];
202 if (get_sigset(&newset, uset)) 202 if (get_sigset(&newset, uset))
203 return -EFAULT; 203 return -EFAULT;
204 sigdelsetmask(&newset, ~_BLOCKABLE); 204 sigdelsetmask(&newset, ~_BLOCKABLE);
@@ -219,7 +219,7 @@ save_static_function(sys32_rt_sigsuspend);
219__attribute_used__ noinline static int 219__attribute_used__ noinline static int
220_sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) 220_sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
221{ 221{
222 compat_sigset_t *uset; 222 compat_sigset_t __user *uset;
223 sigset_t newset; 223 sigset_t newset;
224 size_t sigsetsize; 224 size_t sigsetsize;
225 225
@@ -228,7 +228,7 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
228 if (sigsetsize != sizeof(compat_sigset_t)) 228 if (sigsetsize != sizeof(compat_sigset_t))
229 return -EINVAL; 229 return -EINVAL;
230 230
231 uset = (compat_sigset_t *) regs.regs[4]; 231 uset = (compat_sigset_t __user *) regs.regs[4];
232 if (get_sigset(&newset, uset)) 232 if (get_sigset(&newset, uset))
233 return -EFAULT; 233 return -EFAULT;
234 sigdelsetmask(&newset, ~_BLOCKABLE); 234 sigdelsetmask(&newset, ~_BLOCKABLE);
@@ -236,7 +236,7 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
236 spin_lock_irq(&current->sighand->siglock); 236 spin_lock_irq(&current->sighand->siglock);
237 current->saved_sigmask = current->blocked; 237 current->saved_sigmask = current->blocked;
238 current->blocked = newset; 238 current->blocked = newset;
239 recalc_sigpending(); 239 recalc_sigpending();
240 spin_unlock_irq(&current->sighand->siglock); 240 spin_unlock_irq(&current->sighand->siglock);
241 241
242 current->state = TASK_INTERRUPTIBLE; 242 current->state = TASK_INTERRUPTIBLE;
@@ -245,8 +245,8 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
245 return -ERESTARTNOHAND; 245 return -ERESTARTNOHAND;
246} 246}
247 247
248asmlinkage int sys32_sigaction(int sig, const struct sigaction32 *act, 248asmlinkage int sys32_sigaction(int sig, const struct sigaction32 __user *act,
249 struct sigaction32 *oact) 249 struct sigaction32 __user *oact)
250{ 250{
251 struct k_sigaction new_ka, old_ka; 251 struct k_sigaction new_ka, old_ka;
252 int ret; 252 int ret;
@@ -272,15 +272,15 @@ asmlinkage int sys32_sigaction(int sig, const struct sigaction32 *act,
272 272
273 if (!ret && oact) { 273 if (!ret && oact) {
274 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact))) 274 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)))
275 return -EFAULT; 275 return -EFAULT;
276 err |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags); 276 err |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
277 err |= __put_user((u32)(u64)old_ka.sa.sa_handler, 277 err |= __put_user((u32)(u64)old_ka.sa.sa_handler,
278 &oact->sa_handler); 278 &oact->sa_handler);
279 err |= __put_user(old_ka.sa.sa_mask.sig[0], oact->sa_mask.sig); 279 err |= __put_user(old_ka.sa.sa_mask.sig[0], oact->sa_mask.sig);
280 err |= __put_user(0, &oact->sa_mask.sig[1]); 280 err |= __put_user(0, &oact->sa_mask.sig[1]);
281 err |= __put_user(0, &oact->sa_mask.sig[2]); 281 err |= __put_user(0, &oact->sa_mask.sig[2]);
282 err |= __put_user(0, &oact->sa_mask.sig[3]); 282 err |= __put_user(0, &oact->sa_mask.sig[3]);
283 if (err) 283 if (err)
284 return -EFAULT; 284 return -EFAULT;
285 } 285 }
286 286
@@ -301,7 +301,7 @@ asmlinkage int sys32_sigaltstack(nabi_no_regargs struct pt_regs regs)
301 if (!access_ok(VERIFY_READ, uss, sizeof(*uss))) 301 if (!access_ok(VERIFY_READ, uss, sizeof(*uss)))
302 return -EFAULT; 302 return -EFAULT;
303 err |= __get_user(sp, &uss->ss_sp); 303 err |= __get_user(sp, &uss->ss_sp);
304 kss.ss_sp = (void *) (long) sp; 304 kss.ss_sp = (void __user *) (long) sp;
305 err |= __get_user(kss.ss_size, &uss->ss_size); 305 err |= __get_user(kss.ss_size, &uss->ss_size);
306 err |= __get_user(kss.ss_flags, &uss->ss_flags); 306 err |= __get_user(kss.ss_flags, &uss->ss_flags);
307 if (err) 307 if (err)
@@ -316,7 +316,7 @@ asmlinkage int sys32_sigaltstack(nabi_no_regargs struct pt_regs regs)
316 if (!ret && uoss) { 316 if (!ret && uoss) {
317 if (!access_ok(VERIFY_WRITE, uoss, sizeof(*uoss))) 317 if (!access_ok(VERIFY_WRITE, uoss, sizeof(*uoss)))
318 return -EFAULT; 318 return -EFAULT;
319 sp = (int) (long) koss.ss_sp; 319 sp = (int) (unsigned long) koss.ss_sp;
320 err |= __put_user(sp, &uoss->ss_sp); 320 err |= __put_user(sp, &uoss->ss_sp);
321 err |= __put_user(koss.ss_size, &uoss->ss_size); 321 err |= __put_user(koss.ss_size, &uoss->ss_size);
322 err |= __put_user(koss.ss_flags, &uoss->ss_flags); 322 err |= __put_user(koss.ss_flags, &uoss->ss_flags);
@@ -527,7 +527,7 @@ _sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
527 /* The ucontext contains a stack32_t, so we must convert! */ 527 /* The ucontext contains a stack32_t, so we must convert! */
528 if (__get_user(sp, &frame->rs_uc.uc_stack.ss_sp)) 528 if (__get_user(sp, &frame->rs_uc.uc_stack.ss_sp))
529 goto badframe; 529 goto badframe;
530 st.ss_sp = (void *)(long) sp; 530 st.ss_sp = (void __user *)(long) sp;
531 if (__get_user(st.ss_size, &frame->rs_uc.uc_stack.ss_size)) 531 if (__get_user(st.ss_size, &frame->rs_uc.uc_stack.ss_size))
532 goto badframe; 532 goto badframe;
533 if (__get_user(st.ss_flags, &frame->rs_uc.uc_stack.ss_flags)) 533 if (__get_user(st.ss_flags, &frame->rs_uc.uc_stack.ss_flags))
@@ -624,11 +624,11 @@ static inline void __user *get_sigframe(struct k_sigaction *ka,
624 sp = regs->regs[29]; 624 sp = regs->regs[29];
625 625
626 /* 626 /*
627 * FPU emulator may have it's own trampoline active just 627 * FPU emulator may have it's own trampoline active just
628 * above the user stack, 16-bytes before the next lowest 628 * above the user stack, 16-bytes before the next lowest
629 * 16 byte boundary. Try to avoid trashing it. 629 * 16 byte boundary. Try to avoid trashing it.
630 */ 630 */
631 sp -= 32; 631 sp -= 32;
632 632
633 /* This is the X/Open sanctioned signal stack switching. */ 633 /* This is the X/Open sanctioned signal stack switching. */
634 if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0)) 634 if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0))
@@ -868,7 +868,7 @@ no_signal:
868 } 868 }
869} 869}
870 870
871asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 *act, 871asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 __user *act,
872 struct sigaction32 __user *oact, 872 struct sigaction32 __user *oact,
873 unsigned int sigsetsize) 873 unsigned int sigsetsize)
874{ 874{
@@ -912,7 +912,7 @@ out:
912 return ret; 912 return ret;
913} 913}
914 914
915asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t *set, 915asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t __user *set,
916 compat_sigset_t __user *oset, unsigned int sigsetsize) 916 compat_sigset_t __user *oset, unsigned int sigsetsize)
917{ 917{
918 sigset_t old_set, new_set; 918 sigset_t old_set, new_set;