Re: INIT hangs with tonight BK pull (2.6.9-rc1+)

From: Kirill Korotaev
Date: Fri Sep 03 2004 - 02:55:02 EST


After doing BK pull last night INIT gets stuck in do_tty_hangup after
executing rc.sysinit. Was booting fine with pull from 2 days ago...

Anyone else seeing this?

I suspect pidhash patch because it touched tty_io.c, but I have not tried
reverting it as it is getting too late here... So I apologize in advance
if I am pointing finger at the innocent ;)

Oops, you are right. These do_each_task_pid()/while_each_task_pid() do loop 4ever with 'continue' inside.
Strange, that I haven't faced the problem on my machine before sending the patch... :(

Sorry for the inconvinience. Patch is inside.

Kirill --- ./include/linux/pid.h.pid2 2004-09-03 11:52:27.510664040 +0400
+++ ./include/linux/pid.h 2004-09-03 11:40:33.616192496 +0400
@@ -46,10 +46,10 @@ extern void switch_exec_pids(struct task
do {

#define while_each_task_pid(who, type, task) \
- task = pid_task((task)->pids[type].pid_list.next,\
- type); \
- prefetch((task)->pids[type].pid_list.next); \
- } while (hlist_unhashed(&(task)->pids[type].pid_chain));\
+ } while (task = pid_task((task)->pids[type].pid_list.next,\
+ type), \
+ prefetch((task)->pids[type].pid_list.next), \
+ hlist_unhashed(&(task)->pids[type].pid_chain)); \
} \

#endif /* _LINUX_PID_H */