Messages in this thread | | | Subject | Re: [PATCH 2/3] pidhash: don't use zero pids | From | (Eric W. Biederman) | Date | Mon, 30 Jan 2006 15:43:04 -0700 |
| |
Oleg Nesterov <oleg@tv-sign.ru> writes:
> daemonize() calls set_special_pids(1,1), while init and > kernel threads spawned from init/main.c:init() run with > 0,0 special pids. This patch changes INIT_SIGNALS() so > that that they run with ->pgrp == ->session == 1 also. > > This patch relies on fact that swapper's pid == 1.
Looking more closely this appears to be a bug fix plain and simple, and as the bug has existed for so long without out anyone noticing it should not be a problem to fix it.
/sbin/init has been calling setsid() forever to ensure it has a session and a process group of 1. daemonize using these ids and then being called before /sbin/init called setsid, caused setsid to fail as the process group already existed.
The only symptom I have noticed is that job control does not work in 2.6 when you specify init=/bin/bash. And I didn't realized until I looked back at some older kernels that setsid would have worked and they would not have had this problem.
If there ever was a reason we wanted to have processes that were not part of process groups and sessions that reasons seems lost in the mists of time and we can just forget about it.
/sbin/init does not test the return value of setsid() so we should have no problems whatsoever.
Acked-by: Eric W. Biederman <ebiederm@xmission.com>
> Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> > > --- RC-1/include/linux/init_task.h~ZEROPID 2005-11-22 19:35:52.000000000 +0300 > +++ RC-1/include/linux/init_task.h 2006-01-30 15:12:46.000000000 +0300 > @@ -62,6 +62,8 @@ > .posix_timers = LIST_HEAD_INIT(sig.posix_timers), \ > .cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \ > .rlim = INIT_RLIMITS, \ > + .pgrp = 1, \ > + .session = 1, \ > } > > #define INIT_SIGHAND(sighand) { \ - 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/
| |