lkml.org 
[lkml]   [2006]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC][PATCH] ps command race fix take2 [4/4] proc_pid_readdir
On 22 Aug 2006 13:11:30 +0200
Andi Kleen <ak@suse.de> wrote:

> KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> writes:
>
> > proc_pid_readdir() by list_token.
> >
> > Remember 'where we are reading' by inserting a token in the list.
> > It seems a bit complicated because of RCU but what we do is very simple.
> >
>
> What happens when you have multiple readers at the same time? Can't
> the tokens then be mixed up?
>
multiple readers will insert their own token to a list. And list_next_rcu_skiptoken()
skips all token (not-data). it's used by next_task().


> >+ /* this small kmalloc() can fail in rare case, but readdir()
> >+ * is not allowed to return ENOMEM. retrying is reasonable. */
>
> Who disallows this? Such retry loops are normally discouraged
> because they can lead to deadlocks in OOM situations.
> I think it would be better to just return ENOMEM.
>

Hmm, to be honest, not disallowed. but not allowed. The apps don't expect
readdir(3) failed with -ENOMEM.
But yes, ps command or ls /proc may be caught in the kernel for some time.

-Kame

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-08-22 13:39    [W:0.108 / U:0.040 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site