From: Oleg Nesterov Now there is no point in calling costly find_pid(type) if __detach_pid(type) returned non zero value. Signed-off-by: Oleg Nesterov Signed-off-by: Andrew Morton --- 25-akpm/kernel/pid.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff -puN kernel/pid.c~detach_pid-eliminate-one-find_pid-call kernel/pid.c --- 25/kernel/pid.c~detach_pid-eliminate-one-find_pid-call Fri Oct 1 15:09:16 2004 +++ 25-akpm/kernel/pid.c Fri Oct 1 15:09:16 2004 @@ -191,15 +191,16 @@ static fastcall int __detach_pid(task_t void fastcall detach_pid(task_t *task, enum pid_type type) { - int nr; + int tmp, nr; nr = __detach_pid(task, type); if (!nr) return; - for (type = 0; type < PIDTYPE_MAX; ++type) - if (find_pid(type, nr)) + for (tmp = PIDTYPE_MAX; --tmp >= 0; ) + if (tmp != type && find_pid(tmp, nr)) return; + free_pidmap(nr); } _