MIPS: ARC: Use __noreturn / unreachable in ARC termination functions.
[linux-drm-fsl-dcu.git] / kernel / utsname.c
index 883aaaa7de8a90f28f13099b3fa77b222c20bd9c..831ea71082320e1859daa1f434008816c3052333 100644 (file)
@@ -42,12 +42,14 @@ static struct uts_namespace *clone_uts_ns(struct user_namespace *user_ns,
        if (!ns)
                return ERR_PTR(-ENOMEM);
 
-       err = proc_alloc_inum(&ns->proc_inum);
+       err = ns_alloc_inum(&ns->ns);
        if (err) {
                kfree(ns);
                return ERR_PTR(err);
        }
 
+       ns->ns.ops = &utsns_operations;
+
        down_read(&uts_sem);
        memcpy(&ns->name, &old_ns->name, sizeof(ns->name));
        ns->user_ns = get_user_ns(user_ns);
@@ -84,11 +86,16 @@ void free_uts_ns(struct kref *kref)
 
        ns = container_of(kref, struct uts_namespace, kref);
        put_user_ns(ns->user_ns);
-       proc_free_inum(ns->proc_inum);
+       ns_free_inum(&ns->ns);
        kfree(ns);
 }
 
-static void *utsns_get(struct task_struct *task)
+static inline struct uts_namespace *to_uts_ns(struct ns_common *ns)
+{
+       return container_of(ns, struct uts_namespace, ns);
+}
+
+static struct ns_common *utsns_get(struct task_struct *task)
 {
        struct uts_namespace *ns = NULL;
        struct nsproxy *nsproxy;
@@ -101,17 +108,17 @@ static void *utsns_get(struct task_struct *task)
        }
        task_unlock(task);
 
-       return ns;
+       return ns ? &ns->ns : NULL;
 }
 
-static void utsns_put(void *ns)
+static void utsns_put(struct ns_common *ns)
 {
-       put_uts_ns(ns);
+       put_uts_ns(to_uts_ns(ns));
 }
 
-static int utsns_install(struct nsproxy *nsproxy, void *new)
+static int utsns_install(struct nsproxy *nsproxy, struct ns_common *new)
 {
-       struct uts_namespace *ns = new;
+       struct uts_namespace *ns = to_uts_ns(new);
 
        if (!ns_capable(ns->user_ns, CAP_SYS_ADMIN) ||
            !ns_capable(current_user_ns(), CAP_SYS_ADMIN))
@@ -123,18 +130,10 @@ static int utsns_install(struct nsproxy *nsproxy, void *new)
        return 0;
 }
 
-static unsigned int utsns_inum(void *vp)
-{
-       struct uts_namespace *ns = vp;
-
-       return ns->proc_inum;
-}
-
 const struct proc_ns_operations utsns_operations = {
        .name           = "uts",
        .type           = CLONE_NEWUTS,
        .get            = utsns_get,
        .put            = utsns_put,
        .install        = utsns_install,
-       .inum           = utsns_inum,
 };