On 06/22, Linus Torvalds wrote: > > On Sat, 23 Jun 2007, Benjamin Herrenschmidt wrote: > > > > > > > > It does exactly so, please note this chunk > > > > > > @@ -330,7 +339,7 @@ asmlinkage long sys_signalfd(int ufd, si > > > > > > init_waitqueue_head(&ctx->wqh); > > > ctx->sigmask = sigmask; > > > - ctx->tsk = current; > > > + ctx->tsk = current->group_leader; > > > > > > > It might well be that signalfd's concept of context is wrong in the > > > > first place and it should be attached to processes rather than threads > > > > and that made more explicit in the first place... > > > > Yup, looks like I was looking at a wrong patch... I think it's the right > > thing to do indeed. > > Quite frankly, it strikes me that if we want to do this, then we shouldn't > save the _process_ information at all, we should save the "sighand" > instead.
Yes, unless we pass signalfd to another process. > So either we save the process info, or we save the sighand, but saving the > "group_leader" seems totally bogus. Especially as the group leader can > change (by execve()). Note that exec() can change ->sighand as well, so in general this can't help. Currently not a problem, exec() detaches process from signalfd anyway. This reminds me, we have a similar problem with !CPUCLOCK_PERTHREAD() cpu-timers, iirc. They can survive after exec(), but only if it was ->group_leader who does exec. Oleg. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/