Re: [PATCH 4/5] Use copy_wait_opts_to_user() in wait_task_zombie()

Oleg Nesterov
2009-06-15T16:48:25Z

On 05/11, Vitaly Mayatskikh wrote:
>
> @@ -1267,36 +1265,21 @@ static int wait_task_zombie(struct wait_opts *wo, struct task_struct *p)
> */
> read_unlock(&tasklist_lock);
>
> - retval = wo->wo_rusage
> - ? getrusage(p, RUSAGE_BOTH, wo->wo_rusage) : 0;
> status = (p->signal->flags & SIGNAL_GROUP_EXIT)
> ? p->signal->group_exit_code : p->exit_code;
> - if (!retval && wo->wo_stat)
> + if (wo->wo_stat)
> retval = put_user(status, wo->wo_stat);

We don't check retval, and then later

> [...snip...]
> + retval = copy_wait_opts_to_user(wo, p, pid, uid, why, status, SIGCHLD);

we overwrite it.

This needs a fix.

Oleg.