Re: [PATCH 1/2] copy_process: fix CLONE_PARENT && ->exit_signalinteraction

From: Roland McGrath
Date: Wed Feb 25 2009 - 14:46:39 EST


As I think I said before, I don't really know what the actual use case is
for CLONE_PARENT without CLONE_THREAD. So it's easy to approve changing
its behavior, but I do vaguely worry about who expected what behavior before.

Just for readability, I would prefer that you just change the first line
above that sets p->exit_signal initially. i.e. (but with some comments):

diff --git a/kernel/fork.c b/kernel/fork.c
index a66fbde..f56793b 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1184,7 +1184,10 @@ static struct task_struct *copy_process(unsigned long clone_flags,
p->parent_exec_id = p->self_exec_id;

/* ok, now we should be set up.. */
- p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL);
+ p->exit_signal = ((clone_flags & CLONE_THREAD) ? -1 :
+ (clone_flags & CLONE_PARENT) ?
+ current->group_leader->exit_signal :
+ (clone_flags & CSIGNAL));
p->pdeath_signal = 0;
p->exit_state = 0;



Thanks,
Roland
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/