[C/R v20][PATCH 06/96] eclone (6/11): Check invalid clone flags

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Oren Laadan
Date: Wednesday, March 17, 2010 - 9:07 am

From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>

As pointed out by Oren Laadan, we want to ensure that unused bits in the
clone-flags remain unused and available for future. To ensure this, define
a mask of clone-flags and check the flags in the clone() system calls.

Changelog[v9]:
	- Include the unused clone-flag (CLONE_UNUSED) to VALID_CLONE_FLAGS
	  to avoid breaking any applications that may have set it. IOW, this
	  patch/check only applies to clone-flags bits 33 and higher.

Changelog[v8]:
	- New patch in set

Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Acked-by: Serge E. Hallyn <serue@us.ibm.com>
Tested-by: Serge E. Hallyn <serue@us.ibm.com>
Acked-by: Oren Laadan <orenl.cs.columbia.edu>
---
 include/linux/sched.h |   12 ++++++++++++
 kernel/fork.c         |    3 +++
 2 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/include/linux/sched.h b/include/linux/sched.h
index 78efe7c..d57eab8 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -29,6 +29,18 @@
 #define CLONE_NEWNET		0x40000000	/* New network namespace */
 #define CLONE_IO		0x80000000	/* Clone io context */
 
+#define CLONE_UNUSED        	0x00001000	/* Can be reused ? */
+
+#define VALID_CLONE_FLAGS	(CSIGNAL | CLONE_VM | CLONE_FS | CLONE_FILES |\
+				 CLONE_SIGHAND | CLONE_UNUSED | CLONE_PTRACE |\
+				 CLONE_VFORK  | CLONE_PARENT | CLONE_THREAD  |\
+				 CLONE_NEWNS  | CLONE_SYSVSEM | CLONE_SETTLS |\
+				 CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID  |\
+				 CLONE_DETACHED | CLONE_UNTRACED             |\
+				 CLONE_CHILD_SETTID | CLONE_STOPPED          |\
+				 CLONE_NEWUTS | CLONE_NEWIPC | CLONE_NEWUSER |\
+				 CLONE_NEWPID | CLONE_NEWNET | CLONE_IO)
+
 /*
  * Scheduling policies
  */
diff --git a/kernel/fork.c b/kernel/fork.c
index 737bca9..f95cbd2 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -987,6 +987,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
 	struct task_struct *p;
 	int cgroup_callbacks_done = 0;
 
+	if (clone_flags & ~VALID_CLONE_FLAGS)
+		return ERR_PTR(-EINVAL);
+
 	if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS))
 		return ERR_PTR(-EINVAL);
 
-- 
1.6.3.3

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[C/R v20][PATCH 00/96] Linux Checkpoint-Restart - v20, Oren Laadan, (Wed Mar 17, 9:07 am)
[C/R v20][PATCH 06/96] eclone (6/11): Check invalid clone ..., Oren Laadan, (Wed Mar 17, 9:07 am)
[C/R v20][PATCH 13/96] c/r: break out new_user_ns(), Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 19/96] Namespaces submenu, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 22/96] c/r: documentation, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 28/96] c/r: restart-blocks, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 30/96] c/r: restart multiple processes, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 38/96] c/r: dump open file descriptors, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 51/96] c/r: support for open pipes, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 55/96] c/r: support for UTS namespace, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 60/96] c/r: support semaphore sysv-ipc, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 62/96] c/r: add CKPT_COPY() macro, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 66/96] c/r: restore file-&gt;f_cred, Oren Laadan, (Wed Mar 17, 9:08 am)
[C/R v20][PATCH 73/96] c/r: correctly restore pgid, Oren Laadan, (Wed Mar 17, 9:09 am)
[C/R v20][PATCH 83/96] c/r: checkpoint/restart eventfd, Oren Laadan, (Wed Mar 17, 9:09 am)
[C/R v20][PATCH 95/96] c/r: add selinux support (v6), Oren Laadan, (Wed Mar 17, 9:09 am)
Re: [C/R v20][PATCH 15/96] cgroup freezer: Fix buggy resum ..., Rafael J. Wysocki, (Mon Mar 22, 4:28 pm)
Re: [C/R v20][PATCH 15/96] cgroup freezer: Fix buggy resum ..., Rafael J. Wysocki, (Fri Mar 26, 3:53 pm)
Re: [C/R v20][PATCH 00/96] Linux Checkpoint-Restart - v20, Serge E. Hallyn, (Thu Apr 1, 4:37 pm)