summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorPatrick Mochel <mochel@osdl.org>2003-09-21 23:43:42 -0700
committerPatrick Mochel <mochel@osdl.org>2003-09-21 23:43:42 -0700
commit69a18481b28cf39c73e52cf3e946a9650cc40fad (patch)
tree80c573c203a66669aec0f3101d896afad94330d0 /kernel
parent6bbbe137efd194960978da1ac8cb9fc1225aed2f (diff)
parent8912ad073fd7d7110a57acbfa0b33d4dad9d1ee1 (diff)
Merge osdl.org:/home/mochel/src/kernel/linux-2.5-virgin
into osdl.org:/home/mochel/src/kernel/linux-2.5-power
Diffstat (limited to 'kernel')
-rw-r--r--kernel/fork.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index f2d3115483da..2005c5c180de 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -775,6 +775,14 @@ struct task_struct *copy_process(unsigned long clone_flags,
return ERR_PTR(-EINVAL);
/*
+ * Shared signal handlers imply shared VM. By way of the above,
+ * thread groups also imply shared VM. Blocking this case allows
+ * for various simplifications in other code.
+ */
+ if ((clone_flags & CLONE_SIGHAND) && !(clone_flags & CLONE_VM))
+ return ERR_PTR(-EINVAL);
+
+ /*
* CLONE_DETACHED must match CLONE_THREAD: it's a historical
* thing.
*/