2009-07-01 13:41:16

by Vitaly Mayatskih

[permalink] [raw]
Subject: wait_task_zombie plus WNOWAIT question

Hi!

I'm working on (sigh) next version of wait_task_* cleanups and stuck
in wait_task_zombie. I'm trying to move put_user(stat, wo->wo_stat)
code from all wait_task_* functions to common place, but
wait_task_zombie does not fill wo_stat if WNOWAIT flag is set and does
it w/o that flag. Is it done so by design, or I can make
user-visible change and add put_user in WNOWAIT path?

Thanks!
--
wbr, Vitaly


2009-07-01 13:58:33

by Oleg Nesterov

[permalink] [raw]
Subject: Re: wait_task_zombie plus WNOWAIT question

On 07/01, Vitaly Mayatskikh wrote:
>
> I'm working on (sigh) next version of wait_task_* cleanups and stuck
> in wait_task_zombie. I'm trying to move put_user(stat, wo->wo_stat)
> code from all wait_task_* functions to common place, but
> wait_task_zombie does not fill wo_stat if WNOWAIT flag is set

Only waitid() can use WNOWAIT, and in this case ->wo_stat == NULL.

> and does
> it w/o that flag. Is it done so by design, or I can make
> user-visible change and add put_user in WNOWAIT path?

Just check do not do put_user(->wo_stat) if it is NULL in do_wait
pathes.

Oleg.

2009-07-01 14:10:22

by Vitaly Mayatskih

[permalink] [raw]
Subject: Re: wait_task_zombie plus WNOWAIT question

At Wed, 1 Jul 2009 15:55:44 +0200, Oleg Nesterov wrote:
>
> On 07/01, Vitaly Mayatskikh wrote:
> >
> > I'm working on (sigh) next version of wait_task_* cleanups and stuck
> > in wait_task_zombie. I'm trying to move put_user(stat, wo->wo_stat)
> > code from all wait_task_* functions to common place, but
> > wait_task_zombie does not fill wo_stat if WNOWAIT flag is set
>
> Only waitid() can use WNOWAIT, and in this case ->wo_stat == NULL.
>
> > and does
> > it w/o that flag. Is it done so by design, or I can make
> > user-visible change and add put_user in WNOWAIT path?
>
> Just check do not do put_user(->wo_stat) if it is NULL in do_wait
> pathes.

Got it! Thanks, Oleg!

--
wbr, Vitaly