create_uts_ns() will be used by C/R to create fresh uts_ns.

Signed-off-by: Alexey Dobriyan <[email protected]>
---
 kernel/utsname.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/kernel/utsname.c b/kernel/utsname.c
index 815237a..8a82b4b 100644
--- a/kernel/utsname.c
+++ b/kernel/utsname.c
@@ -15,6 +15,16 @@
 #include <linux/err.h>
 #include <linux/slab.h>
 
+static struct uts_namespace *create_uts_ns(void)
+{
+       struct uts_namespace *uts_ns;
+
+       uts_ns = kmalloc(sizeof(struct uts_namespace), GFP_KERNEL);
+       if (uts_ns)
+               kref_init(&uts_ns->kref);
+       return uts_ns;
+}
+
 /*
  * Clone a new ns copying an original utsname, setting refcount to 1
  * @old_ns: namespace to clone
@@ -24,14 +34,13 @@ static struct uts_namespace *clone_uts_ns(struct 
uts_namespace *old_ns)
 {
        struct uts_namespace *ns;
 
-       ns = kmalloc(sizeof(struct uts_namespace), GFP_KERNEL);
+       ns = create_uts_ns();
        if (!ns)
                return ERR_PTR(-ENOMEM);
 
        down_read(&uts_sem);
        memcpy(&ns->name, &old_ns->name, sizeof(ns->name));
        up_read(&uts_sem);
-       kref_init(&ns->kref);
        return ns;
 }
 
_______________________________________________
Containers mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to