This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / arch / mips / kernel / sysirix.c
index db2a3a7..15272d8 100644 (file)
@@ -129,21 +129,16 @@ asmlinkage int irix_prctl(struct pt_regs *regs)
                if (value > RLIM_INFINITY)
                        value = RLIM_INFINITY;
                if (capable(CAP_SYS_ADMIN)) {
-                       task_lock(current->group_leader);
-                       current->signal->rlim[RLIMIT_STACK].rlim_max =
-                               current->signal->rlim[RLIMIT_STACK].rlim_cur = value;
-                       task_unlock(current->group_leader);
+                       current->rlim[RLIMIT_STACK].rlim_max =
+                               current->rlim[RLIMIT_STACK].rlim_cur = value;
                        error = value;
                        break;
                }
-               task_lock(current->group_leader);
-               if (value > current->signal->rlim[RLIMIT_STACK].rlim_max) {
+               if (value > current->rlim[RLIMIT_STACK].rlim_max) {
                        error = -EINVAL;
-                       task_unlock(current->group_leader);
                        break;
                }
-               current->signal->rlim[RLIMIT_STACK].rlim_cur = value;
-               task_unlock(current->group_leader);
+               current->rlim[RLIMIT_STACK].rlim_cur = value;
                error = value;
                break;
        }
@@ -151,7 +146,7 @@ asmlinkage int irix_prctl(struct pt_regs *regs)
        case PR_GETSTACKSIZE:
                printk("irix_prctl[%s:%d]: Wants PR_GETSTACKSIZE\n",
                       current->comm, current->pid);
-               error = current->signal->rlim[RLIMIT_STACK].rlim_cur;
+               error = current->rlim[RLIMIT_STACK].rlim_cur;
                break;
 
        case PR_MAXPPROCS:
@@ -288,9 +283,9 @@ asmlinkage int irix_syssgi(struct pt_regs *regs)
                int pid = (int) regs->regs[base + 5];
                char *buf = (char *) regs->regs[base + 6];
                struct task_struct *p;
-               char tcomm[sizeof(current->comm)];
+               char comm[16];
 
-               retval = verify_area(VERIFY_WRITE, buf, sizeof(tcomm));
+               retval = verify_area(VERIFY_WRITE, buf, 16);
                if (retval)
                        break;
                read_lock(&tasklist_lock);
@@ -300,11 +295,11 @@ asmlinkage int irix_syssgi(struct pt_regs *regs)
                        retval = -ESRCH;
                        break;
                }
-               get_task_comm(tcomm, p);
+               memcpy(comm, p->comm, 16);
                read_unlock(&tasklist_lock);
 
                /* XXX Need to check sizes. */
-               copy_to_user(buf, tcomm, sizeof(tcomm));
+               copy_to_user(buf, p->comm, 16);
                retval = 0;
                break;
        }
@@ -564,7 +559,7 @@ asmlinkage int irix_brk(unsigned long brk)
        /*
         * Check against rlimit and stack..
         */
-       rlim = current->signal->rlim[RLIMIT_DATA].rlim_cur;
+       rlim = current->rlim[RLIMIT_DATA].rlim_cur;
        if (rlim >= RLIM_INFINITY)
                rlim = ~0;
        if (brk - mm->end_code > rlim) {
@@ -593,7 +588,7 @@ asmlinkage int irix_brk(unsigned long brk)
         * Ok, looks good - let it rip.
         */
        mm->brk = brk;
-       __do_brk(oldbrk, newbrk-oldbrk);
+       do_brk(oldbrk, newbrk-oldbrk);
        ret = 0;
 
 out:
@@ -621,14 +616,8 @@ asmlinkage int irix_getgid(struct pt_regs *regs)
 
 asmlinkage int irix_stime(int value)
 {
-       int err;
-       struct timespec tv;
-
-       tv.tv_sec = value;
-       tv.tv_nsec = 0;
-       err = security_settime(&tv, NULL);
-       if (err)
-               return err;
+       if (!capable(CAP_SYS_TIME))
+               return -EPERM;
 
        write_seqlock_irq(&xtime_lock);
        xtime.tv_sec = value;
@@ -926,8 +915,8 @@ asmlinkage int irix_getdomainname(char *name, int len)
                return error;
 
        down_read(&uts_sem);
-       if (len > __NEW_UTS_LEN)
-               len = __NEW_UTS_LEN;
+       if(len > (__NEW_UTS_LEN - 1))
+               len = __NEW_UTS_LEN - 1;
        error = 0;
        if (copy_to_user(name, system_utsname.domainname, len))
                error = -EFAULT;
@@ -2145,7 +2134,7 @@ asmlinkage int irix_ulimit(int cmd, int arg)
                retval = -EINVAL;
                goto out;
 #endif
-               retval = current->signal->rlim[RLIMIT_NOFILE].rlim_cur;
+               retval = current->rlim[RLIMIT_NOFILE].rlim_cur;
                goto out;
 
        case 5: