Please put the copy_to_user() invocation into sys_getrusage. That is the
only function that needs to deal with user space issues includding
the transfer of the contents of struct rusage. Define
a local rusage in sys_getrusage. Pass that address to the other functions
and only copy on success to user space.
copy_to_user occurs repeatedly:
On Fri, 23 Dec 2005, Ravikiran G Thirumalai wrote:
> if (unlikely(!p->signal))
> - return;
> + return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
>
> + cputime_to_timeval(utime, &r.ru_utime);
> + cputime_to_timeval(stime, &r.ru_stime);
> +
> + return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
> +}
> +
> +
> + return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
> }
>
> + if (unlikely(!p->signal))
> + return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
> +
But its only needed here:
> asmlinkage long sys_getrusage(int who, struct rusage __user *ru)
> {
> - if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN)
> - return -EINVAL;
> - return getrusage(current, who, ru);
> + switch (who) {
> + case RUSAGE_SELF:
> + return getrusage_self(ru);
> + case RUSAGE_CHILDREN:
> + return getrusage_children(ru);
> + default:
> + break;
> + }
> + return -EINVAL;
> }
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]