Commit ed469a63 authored by Alexey Dobriyan's avatar Alexey Dobriyan Committed by Linus Torvalds
Browse files

pidns: make create_pid_namespace() accept parent pidns

create_pid_namespace() creates everything, but caller has to assign parent
pidns by hand, which is unnatural.  At the moment of call new ->level has
to be taken from somewhere and parent pidns is already available.
Signed-off-by: default avatarAlexey Dobriyan <>
Cc: Pavel Emelyanov <>
Cc: "Eric W. Biederman" <>
Acked-by: default avatarSerge Hallyn <>
Acked-by: default avatarSukadev Bhattiprolu <>
Reviewed-by: default avatarWANG Cong <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent 17f98dcf
......@@ -67,9 +67,10 @@ err_alloc:
return NULL;
static struct pid_namespace *create_pid_namespace(unsigned int level)
static struct pid_namespace *create_pid_namespace(struct pid_namespace *parent_pid_ns)
struct pid_namespace *ns;
unsigned int level = parent_pid_ns->level + 1;
int i;
ns = kmem_cache_zalloc(pid_ns_cachep, GFP_KERNEL);
......@@ -86,6 +87,7 @@ static struct pid_namespace *create_pid_namespace(unsigned int level)
ns->level = level;
ns->parent = get_pid_ns(parent_pid_ns);
set_bit(0, ns->pidmap[0].page);
atomic_set(&ns->pidmap[0].nr_free, BITS_PER_PAGE - 1);
......@@ -125,9 +127,7 @@ struct pid_namespace *copy_pid_ns(unsigned long flags, struct pid_namespace *old
if (flags & CLONE_THREAD)
goto out_put;
new_ns = create_pid_namespace(old_ns->level + 1);
if (!IS_ERR(new_ns))
new_ns->parent = get_pid_ns(old_ns);
new_ns = create_pid_namespace(old_ns);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment