#endif
if (act) {
sigset_t mask;
- if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
+ if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
__get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
__get_user(new_ka.sa.sa_flags, &act->sa_flags))
return -EFAULT;
ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
if (!ret && oact) {
- if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) ||
+ if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
__put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
__put_user(old_ka.sa.sa_flags, &oact->sa_flags))
return -EFAULT;
asmlinkage int irix_sigprocmask(int how, irix_sigset_t *new, irix_sigset_t *old)
{
sigset_t oldbits, newbits;
- int error;
if (new) {
- error = verify_area(VERIFY_READ, new, sizeof(*new));
- if (error)
- return error;
+ if (!access_ok(VERIFY_READ, new, sizeof(*new)))
+ return -EFAULT;
__copy_from_user(&newbits, new, sizeof(unsigned long)*4);
sigdelsetmask(&newbits, ~_BLOCKABLE);
spin_unlock_irq(¤t->sighand->siglock);
}
if(old) {
- error = verify_area(VERIFY_WRITE, old, sizeof(*old));
- if(error)
- return error;
+ if (!access_ok(VERIFY_WRITE, old, sizeof(*old)))
+ return -EFAULT;
__copy_to_user(old, ¤t->blocked, sizeof(unsigned long)*4);
}
#endif
/* Must always specify the signal set. */
- if(!set)
+ if (!set)
return -EINVAL;
- error = verify_area(VERIFY_READ, set, sizeof(kset));
- if (error)
+ if (!access_ok(VERIFY_READ, set, sizeof(kset))) {
+ error = -EFAULT;
goto out;
+ }
__copy_from_user(&kset, set, sizeof(set));
if (error)
goto out;
}
- if(tp) {
- error = verify_area(VERIFY_READ, tp, sizeof(*tp));
- if(error)
- return error;
- if(!tp->tv_sec && !tp->tv_nsec) {
+ if (tp) {
+ if (!access_ok(VERIFY_READ, tp, sizeof(*tp)))
+ return -EFAULT;
+ if (!tp->tv_sec && !tp->tv_nsec) {
error = -EINVAL;
goto out;
}
retval = -EINVAL;
goto out;
}
- retval = verify_area(VERIFY_WRITE, info, sizeof(*info));
- if(retval)
+ if (!access_ok(VERIFY_WRITE, info, sizeof(*info))) {
+ retval = -EFAULT;
goto out;
+ }
if (ru) {
- retval = verify_area(VERIFY_WRITE, ru, sizeof(*ru));
- if(retval)
+ if (!access_ok(VERIFY_WRITE, ru, sizeof(*ru))) {
+ retval = -EFAULT;
goto out;
+ }
}
if (options & ~(W_MASK)) {
retval = -EINVAL;
asmlinkage int irix_getcontext(struct pt_regs *regs)
{
- int error, i, base = 0;
+ int i, base = 0;
struct irix5_context *ctx;
unsigned long flags;
current->comm, current->pid, ctx);
#endif
- error = verify_area(VERIFY_WRITE, ctx, sizeof(*ctx));
- if(error)
- goto out;
+ if (!access_ok(VERIFY_WRITE, ctx, sizeof(*ctx)))
+ return -EFAULT;
+
__put_user(current->thread.irix_oldctx, &ctx->link);
__copy_to_user(&ctx->sigmask, ¤t->blocked, sizeof(irix_sigset_t));
__put_user(regs->cp0_epc, &ctx->regs[35]);
flags = 0x0f;
- if(!used_math()) {
+ if (!used_math()) {
flags &= ~(0x08);
} else {
/* XXX wheee... */
printk("Wheee, no code for saving IRIX FPU context yet.\n");
}
__put_user(flags, &ctx->flags);
- error = 0;
-out:
- return error;
+ return 0;
}
asmlinkage unsigned long irix_setcontext(struct pt_regs *regs)
current->comm, current->pid, ctx);
#endif
- error = verify_area(VERIFY_READ, ctx, sizeof(*ctx));
- if (error)
+ if (!access_ok(VERIFY_READ, ctx, sizeof(*ctx))) {
+ error = -EFAULT;
goto out;
+ }
if (ctx->flags & 0x02) {
/* XXX sigstack garbage, todo... */
asmlinkage int irix_sigstack(struct irix_sigstack *new, struct irix_sigstack *old)
{
- int error;
+ int error = -EFAULT;
#ifdef DEBUG_SIG
printk("[%s:%d] irix_sigstack(%p,%p)\n",
current->comm, current->pid, new, old);
#endif
if(new) {
- error = verify_area(VERIFY_READ, new, sizeof(*new));
- if(error)
+ if (!access_ok(VERIFY_READ, new, sizeof(*new)))
goto out;
}
if(old) {
- error = verify_area(VERIFY_WRITE, old, sizeof(*old));
- if(error)
+ if (!access_ok(VERIFY_WRITE, old, sizeof(*old)))
goto out;
}
error = 0;
asmlinkage int irix_sigaltstack(struct irix_sigaltstack *new,
struct irix_sigaltstack *old)
{
- int error;
+ int error = -EFAULT;
#ifdef DEBUG_SIG
printk("[%s:%d] irix_sigaltstack(%p,%p)\n",
current->comm, current->pid, new, old);
#endif
if (new) {
- error = verify_area(VERIFY_READ, new, sizeof(*new));
- if(error)
+ if (!access_ok(VERIFY_READ, new, sizeof(*new)))
goto out;
}
if (old) {
- error = verify_area(VERIFY_WRITE, old, sizeof(*old));
- if(error)
+ if (!access_ok(VERIFY_WRITE, old, sizeof(*old)))
goto out;
}
error = 0;
asmlinkage int irix_sigsendset(struct irix_procset *pset, int sig)
{
- int error;
+ if (!access_ok(VERIFY_READ, pset, sizeof(*pset)))
+ return -EFAULT;
- error = verify_area(VERIFY_READ, pset, sizeof(*pset));
- if(error)
- goto out;
#ifdef DEBUG_SIG
printk("[%s:%d] irix_sigsendset([%d,%d,%d,%d,%d],%d)\n",
current->comm, current->pid,
pset->cmd, pset->ltype, pset->lid, pset->rtype, pset->rid,
sig);
#endif
- error = -EINVAL;
-
-out:
- return error;
+ return -EINVAL;
}