Skip to contentSkip to conversation

Deny CLONE_PARENT|CLONE_NEWPID combination

PATCH In review Sukadev Bhattiprolu 4 participants 5 messages Jul 28, 2009 2 messages not in the archive Namespaces:

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Deny CLONE_PARENT|CLONE_NEWPID combination

Deny CLONE_PARENT|CLONE_NEWPID combination.

CLONE_PARENT was used to implement an older threading model. For consistency with the CLONE_THREAD check in copy_pid_ns(), disable CLONE_PARENT and CLONE_SIGHAND with CLONE_NEWPID, at least until the required semantics of the pid namespaces are clear.

Changelog[v3]:
Remove CLONE_SIGHAND and for now only fail CLONE_NEWPID|CLONE_PARENT.
Changelog[v2]:
[Eric Biederman] Disable CLONE_SIGHAND also ?

---
 kernel/pid_namespace.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/pid_namespace.c +1 -1
Index: linux-mmotm/kernel/pid_namespace.c
===================================================================
@@ -118,7 +118,7 @@
 {
 	if (!(flags & CLONE_NEWPID))
 		return get_pid_ns(old_ns);
-	if (flags & CLONE_THREAD)
+	if (flags & (CLONE_THREAD|CLONE_PARENT))
 		return ERR_PTR(-EINVAL);
 	return create_pid_namespace(old_ns);
 }

A message that is not in the archive (sent off-list or not yet received): 20090728164406.GA17275-r/[email protected]

#2 lore raw
Quoted 10 lines · Sukadev Bhattiprolu

Deny CLONE_PARENT|CLONE_NEWPID combination.

CLONE_PARENT was used to implement an older threading model. For consistency with the CLONE_THREAD check in copy_pid_ns(), disable CLONE_PARENT and CLONE_SIGHAND with CLONE_NEWPID, at least until the required semantics of the pid namespaces are clear.

Changelog[v3]:
Remove CLONE_SIGHAND and for now only fail CLONE_NEWPID|CLONE_PARENT.

(FWIW your patch description does not reflect this...)

Quoted 23 lines

Changelog[v2]:
[Eric Biederman] Disable CLONE_SIGHAND also ?

---
 kernel/pid_namespace.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-mmotm/kernel/pid_namespace.c
===================================================================

kernel/pid_namespace.c +1 -1
@@ -118,7 +118,7 @@
 {
 	if (!(flags & CLONE_NEWPID))
 		return get_pid_ns(old_ns);
-	if (flags & CLONE_THREAD)
+	if (flags & (CLONE_THREAD|CLONE_PARENT))
 		return ERR_PTR(-EINVAL);
 	return create_pid_namespace(old_ns);
 }
#3 lore raw
In reply to Sukadev Bhattiprolu
Quoted 10 lines · Sukadev Bhattiprolu

Deny CLONE_PARENT|CLONE_NEWPID combination.

CLONE_PARENT was used to implement an older threading model. For consistency with the CLONE_THREAD check in copy_pid_ns(), disable CLONE_PARENT and CLONE_SIGHAND with CLONE_NEWPID, at least until the required semantics of the pid namespaces are clear.

Changelog[v3]:
Remove CLONE_SIGHAND and for now only fail CLONE_NEWPID|CLONE_PARENT.

(FWIW your patch description does not reflect this...)

Quoted 23 lines

Changelog[v2]:
[Eric Biederman] Disable CLONE_SIGHAND also ?

---
 kernel/pid_namespace.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-mmotm/kernel/pid_namespace.c
===================================================================

kernel/pid_namespace.c +1 -1
@@ -118,7 +118,7 @@
 {
 	if (!(flags & CLONE_NEWPID))
 		return get_pid_ns(old_ns);
-	if (flags & CLONE_THREAD)
+	if (flags & (CLONE_THREAD|CLONE_PARENT))
 		return ERR_PTR(-EINVAL);
 	return create_pid_namespace(old_ns);
 }
author Acked-by Roland McGrath Acked-by Serge Hallyn
#4 lore raw

Serge E. Hallyn [[email protected]] wrote:

| Quoting Sukadev Bhattiprolu ([email protected]):
| > 
| > Deny CLONE_PARENT|CLONE_NEWPID combination.
| > 
| > CLONE_PARENT was used to implement an older threading model.  For consistency
| > with the CLONE_THREAD check in copy_pid_ns(), disable CLONE_PARENT and
| > CLONE_SIGHAND with CLONE_NEWPID, at least until the required semantics of
| > the pid namespaces are clear.
| > 
| > Changelog[v3]:
| > 	Remove CLONE_SIGHAND and for now only fail CLONE_NEWPID|CLONE_PARENT.
| 
| (FWIW your patch description does not reflect this...)

You are right. Here is the patch with updated description.
---

Deny CLONE_PARENT|CLONE_NEWPID|CLONE_SIGHAND combination.

CLONE_PARENT was used to implement an older threading model. For consistency with the CLONE_THREAD check in copy_pid_ns(), disable CLONE_PARENT with CLONE_NEWPID, at least until the required semantics of pid namespaces are clear.

Changelog[v3]:
Remove CLONE_SIGHAND and for now only fail CLONE_NEWPID|CLONE_PARENT.
Changelog[v2]:
[Eric Biederman] Disable CLONE_SIGHAND also ?

---
 kernel/pid_namespace.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/pid_namespace.c +1 -1
Index: linux-mmotm/kernel/pid_namespace.c
===================================================================
@@ -118,7 +118,7 @@
 {
 	if (!(flags & CLONE_NEWPID))
 		return get_pid_ns(old_ns);
-	if (flags & CLONE_THREAD)
+	if (flags & (CLONE_THREAD|CLONE_PARENT))
 		return ERR_PTR(-EINVAL);
 	return create_pid_namespace(old_ns);
 }

A message that is not in the archive (sent off-list or not yet received): 20090728180553.GB6427-r/[email protected]

Acked-by Roland McGrath Acked-by Serge Hallyn
#6 lore raw

Serge E. Hallyn [serue-r/[email protected]] wrote:

| Quoting Sukadev Bhattiprolu ([email protected]):
| > 
| > Deny CLONE_PARENT|CLONE_NEWPID combination.
| > 
| > CLONE_PARENT was used to implement an older threading model.  For consistency
| > with the CLONE_THREAD check in copy_pid_ns(), disable CLONE_PARENT and
| > CLONE_SIGHAND with CLONE_NEWPID, at least until the required semantics of
| > the pid namespaces are clear.
| > 
| > Changelog[v3]:
| > 	Remove CLONE_SIGHAND and for now only fail CLONE_NEWPID|CLONE_PARENT.
| 
| (FWIW your patch description does not reflect this...)

You are right. Here is the patch with updated description.
---

Deny CLONE_PARENT|CLONE_NEWPID|CLONE_SIGHAND combination.

CLONE_PARENT was used to implement an older threading model. For consistency with the CLONE_THREAD check in copy_pid_ns(), disable CLONE_PARENT with CLONE_NEWPID, at least until the required semantics of pid namespaces are clear.

Changelog[v3]:
Remove CLONE_SIGHAND and for now only fail CLONE_NEWPID|CLONE_PARENT.
Changelog[v2]:
[Eric Biederman] Disable CLONE_SIGHAND also ?

---
 kernel/pid_namespace.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/pid_namespace.c +1 -1
Index: linux-mmotm/kernel/pid_namespace.c
===================================================================
@@ -118,7 +118,7 @@
 {
 	if (!(flags & CLONE_NEWPID))
 		return get_pid_ns(old_ns);
-	if (flags & CLONE_THREAD)
+	if (flags & (CLONE_THREAD|CLONE_PARENT))
 		return ERR_PTR(-EINVAL);
 	return create_pid_namespace(old_ns);
 }