--- ./fs/proc/array.c.nt 2004-09-13 18:56:17.000000000 +0400 +++ ./fs/proc/array.c 2004-09-13 19:13:03.749684712 +0400 @@ -338,6 +338,7 @@ static int do_task_stat(struct task_stru spin_lock_irq(&task->sighand->siglock); num_threads = atomic_read(&task->signal->count); collect_sigign_sigcatch(task, &sigign, &sigcatch); + spin_unlock_irq(&task->sighand->siglock); /* add up live thread stats at the group level */ if (whole) { @@ -350,8 +351,6 @@ static int do_task_stat(struct task_stru t = next_thread(t); } while (t != task); } - - spin_unlock_irq(&task->sighand->siglock); } if (task->signal) { if (task->signal->tty) {